ACM算法
江西师范大学-20届-吴悠
江西师范大学20届软件学院毕业生,大数据方向,大数据技术、机器学习、深度学习、爬虫、Django、区块链、ACM、PS修图、Pr视频剪辑、摄影都搞。爱好旅游、摄影、跑步、读书。
展开
-
幂取模算法
二分幂取模算法#include<iostream>using namespace std;//求a^n mod m int pow_mod(int a,int n,int m) //幂取模 { int x,ans; if(n==0) return 1; //指数为1时,a^0=1,直接返回1 if(n==1) return a%m; //当指数为1时,返回...原创 2018-09-24 11:32:10 · 193 阅读 · 0 评论 -
排序算法基本齐全(C语言版)
直接给出当初大一下学期学算法与数据结构课的程序吧,把很多排序算法都写了#include <stdio.h>#include <stdlib.h>#include <string.h>int inputNums(int a[]) //初始化函数{ int x,i=0; scanf("%d",&x); while(x!=-1)...原创 2018-09-12 14:49:52 · 285 阅读 · 0 评论 -
归并排序
这学期选修了学校的《算法设计与分析》,在讲归并排序,就顺便把归并排序的模板敲一敲,没准以后打比赛要用到这个模板呢。 平时打比赛用多了algorithm头文件里的sort函数来排序,所以基本没怎么敲过排序算法。 因为一个月的数学建模,一直没时间写算法,发现敲代码的手微微颤抖啊,以后再忙还是得隔几天就写一些算法题啊!!!否则明年的蓝桥杯就凉凉了。 归并排序的时间复杂度是n*log n,因为使用了...原创 2018-09-11 22:41:07 · 198 阅读 · 1 评论 -
杭电2203题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2203方法一:将str1复制给str,再将str接到str1后面,最后判断str2是否包含在str1中(此处用到了STL库中的strstr函数)代码如下:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;..原创 2019-03-03 23:33:48 · 213 阅读 · 0 评论 -
天梯赛座位分配(模拟)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805081289900032就是一道简单模拟题,记得去年的时候都不会做,因为看不懂题意其实很简单的,就是竖排模拟吧需要把它的样例展开来看#1 1 4 7 10 13 16 19 22 25 28 ...#2 2 5 8 11 14 17 20 ...原创 2019-03-04 11:26:16 · 611 阅读 · 0 评论 -
天梯赛L1-050 倒数第N个字符串
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805080346181632开始我以为是考逆康拓展开呢,但这是L1级别的题,应该没那么难吧,然后翻看了别人了博客,原来就是个26进制代码如下:#include<bits/stdc++.h>using namespace std;void fi...原创 2019-03-04 22:53:12 · 236 阅读 · 0 评论 -
L2-016 愿天下有情人都是失散多年的兄妹(递归、模拟题)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805061769609216一开始看到这种关系的,立马想到用并查集,但一看还有父亲和母亲,这可咋搞并查集呀,就去看别人的解题报告去了。用广搜的方法没看懂咋搞的,还是模拟大法好呀,一套递归就解决了。#include<bits/stdc++.h>us...原创 2019-03-12 20:08:55 · 232 阅读 · 0 评论 -
L2-008 最长对称子串
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805067704549376参考链接:https://blog.csdn.net/king_cannon_fodder/article/details/75893967最重要的是要考虑对称子串既有可能是奇数长度的,又有可能是偶数长度的!!!AC代码:#in...原创 2019-03-16 09:41:00 · 222 阅读 · 0 评论 -
[蓝桥杯][基础练习VIP]芯片测试
题目链接:http://www.dotcpp.com/oj/problem1473.html这题还是很有意思的,题目最重要的一句话就是有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。所以无论怎么样,每一个芯片都能被正确地判断是好芯片还是坏芯片。整道题就是算有多少个1。之前做了一遍没做出来,还有一个原因就是看错了题目在这n行中的第i行第j列(1≤i, j≤n)的数据表示...原创 2019-03-22 19:28:17 · 291 阅读 · 0 评论 -
贪心算法(硬币问题)
贪心算法贪心算法局部最优就是整体最优#include &lt;cmath&gt;#include &lt;cstring&gt;using namespace std;int money[6]={1,5,10,50,100,500};//表示1、5、10、50、100、500int num[6];//分别代表对应的硬币个数int main(){ int a,ans;//a代...原创 2018-10-13 15:30:58 · 1023 阅读 · 0 评论 -
杭电1050题贪心
杭电1050题贪心算法解题思路:本题为贪心算法,为求最优时间,可以先将走廊两侧房间均加1除以2使得两侧房间数组下标相等,定义一个数组,将数组赋初值为0,遍历数组,经过一次房间则加1,最后找到数组里最大的数即最优解。#include&lt;iostream&gt;using namespace std;int main(){ int t,n,temp,a,b; cin&gt;&gt;t...原创 2018-10-14 11:21:12 · 366 阅读 · 0 评论 -
贪心问题(节目单)
贪心问题(节目单)杭电2037题今年暑假不AChttp://acm.hdu.edu.cn/showproblem.php?pid=2037贪心策略是对结束时间进行排序,结束时间越早排的越前前天打院赛,这种题目曾经看《挑战程序设计竞赛》还看到过,明明知道贪心策略,可竟然忽然间不记得sort函数的用法,然后没做出来,有点难受,所以还是得勤写博客啊sort(a,a+n,cmp),a是数组起点,a...原创 2018-11-20 15:03:58 · 303 阅读 · 0 评论 -
滑雪问题(贪心)
滑雪问题(贪心)滑雪问题的是POJ1088,方法有贪心、二维dp求最长下降子序列、记忆化搜索我开始疑惑疑惑一点,在贪心策略为什么是从高到低还要小于号延伸是向四个方向延伸后来一想这是求下降的最长延伸长度贪心代码如下:#include<iostream>#include<cstring>#include<algorithm>#include<...原创 2018-12-02 23:01:31 · 1297 阅读 · 0 评论 -
RPG的天赋分支(左右两支的贪心策略)
这次学院天梯赛选拔赛的题目,一看题目就知道是贪心算法。开始也想到了用左右两边的差值排序来做贪心,即差值的绝对值越大的,越排在前面,然后具体求哪边就是看哪边大。当时遇到的问题是,假如都是左边大于右边呢,那右边的属性如何点满,然后就卡主了。题目链接:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1008&cid=34811AC...原创 2019-03-08 23:11:04 · 331 阅读 · 0 评论 -
大数加法
大数加法大数加法就是模拟手算,也就是竖式这里仅讨论正整数和正整数的大数加法#include<iostream>#include<cstring>using namespace std;char a[1001];char b[1001];int c[1001];int lenc;void add(){ int lena,lenb,i,j,m,dig;...原创 2018-10-14 18:19:38 · 168 阅读 · 0 评论 -
大数减法
大数减法这里仅讨论正整数和正整数的减法#include<iostream>#include<cstring>using namespace std;bool fuhao;char ashu[1001];char bshu[1001];int c[1001];int lenc;void sub() //对两个正数的大数减法 { fuhao=false...原创 2018-10-14 18:21:00 · 94 阅读 · 0 评论 -
java做大数加法
java做大数加法java做大数运算的类是BigIntegerimport java.util.Scanner;import java.math.BigInteger; public class Main { public static void main(String[] args) { BigInteger a,b,c; int n; ...原创 2018-11-20 15:22:58 · 196 阅读 · 0 评论 -
费马小定理
费马小定理在算法中的意义1640 年,法国业余数学家 Pierre de Fermat (通常译作“费马”)发现,如果 n 是一个质数的话,那么对于任意一个数 a , a 的 n 次方减去 a 之后都将是 n 的倍数。例如, 7 是一个质数,于是 27 – 2 、 37 – 3 , 47 – 4 ,甚至 1007 – 100 ,统统都能被 7 整除。但 15 不是质数(它可以被分解为 3 ×...原创 2018-09-24 17:10:13 · 5929 阅读 · 1 评论 -
数论中的取模运算
数论中的取模运算#include &lt;iostream&gt;#include &lt;cstring&gt;using namespace std;void mul_mod(int a,int b,int n) //普通取模运算{ a%=n; b%=n; cout&lt;&lt;"After mod is "&原创 2018-10-13 15:33:48 · 592 阅读 · 0 评论 -
中国剩余定力和扩展欧几里得算法的数学理论讲解
中国剩余定理和扩展欧几里得原文地址:http://www.matrix67.com/blog/archives/5100中国剩余定理如果两个正整数的最大公约数为 1 ,我们就说这两个数是互质的。这是一个非常重要的概念。如果 a 和 b 互质,这就意味着分数 a / b 已经不能再约分了,意味着 a × b 的棋盘的对角线不会经过中间的任何交叉点,意味着循环长度分别为 a 和 b 的两个周...转载 2018-10-29 23:34:58 · 475 阅读 · 0 评论 -
斯特灵公式的应用
斯特灵公式的多种应用斯特灵公式是一条用来去n阶乘近似解的数学公式,可以用来估算某数的大小,结合log可以估算某数的位数,或者估算某数的阶乘是另一个数的倍数#include<iostream>#include<cmath>using namespace std;long long int result;void Stirling(long long int n)...原创 2018-09-24 11:55:52 · 293 阅读 · 0 评论 -
Eratosthenes筛法求素数
Eratosthenes筛法高效求素数筛法的思想:对于不超过n的每个非负整数p,删除2p,3p,4p,5p,…,当处理完所有数之后,还没有被删除的数就是素数这是简易版的筛法,也最好理解for(int i=2;i&amp;lt;=n;i++) for(int j=i*2;j&amp;lt;=n;j+=i) vis[j]=false;还可以继续改进,为什么呢?给定外层循环变量i,内层...原创 2018-09-24 11:01:19 · 507 阅读 · 0 评论 -
扩展欧几里得算法
扩展欧几里得算法基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。证明:设 a&gt;b。1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0;2,ab!=0 时设 ax1+by1=gcd(a,b);bx2+(a mod b)y2=gcd(b,a mod b);根据朴素的...原创 2018-09-24 10:14:09 · 217 阅读 · 0 评论 -
欧几里得算法求最大公约数
适合数论的初学者,欧几里得算法原创 2018-09-17 22:35:12 · 1865 阅读 · 0 评论 -
快速幂
快速幂参考链接:https://www.cnblogs.com/CXCXCXC/p/4641812.html快速幂问题(杭电1097题):http://acm.hdu.edu.cn/showproblem.php?pid=1097由于是二进制,很自然地想到用位运算这个强大的工具:&amp;amp;和&amp;gt;&amp;gt; &amp;amp;运算通常用于二进制取位操作,例如一个数 &amp;amp;原创 2018-11-21 21:52:18 · 112 阅读 · 0 评论 -
杭电2201题(概率论水题)
呃,这真的是一道概率论水题,,,只是我概率论学的比较差,理解了概率论的推算过程,核心代码就一行题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2201思路:因为是随机事件,每个人做到自己的位置都是1/n,一开始还没想到这点,晕了不是,这么想的:前m-1人都没坐在第m人的位子的概率为P=(n-1)/n * (n-2)/(n-1)/ * … * (n-...原创 2019-02-10 11:16:58 · 289 阅读 · 0 评论 -
质因数分解
来源:Codeforces Round # 538(Div.2)题目链接:https://codeforces.com/contest/1114/problem/C题目意思就是输入:输入两个数字n和b,问n转换成b进制后输出:后面有多少个零题目样例:6 9 -->138 11 -->35 2 -->35 10 -->1思路:先筛出b中的质因数和各质因数个...原创 2019-02-12 12:02:51 · 182 阅读 · 0 评论 -
蓝桥杯(算法训练 P0505)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T512题解:每次累乘前去掉末尾的0,值得注意的时候得到的值要保留在4左右,因为可能会出现一个单数去乘出现末尾为0的情况代码如下:#include<bits/stdc++.h>using namespace std;int main(){ long long int n,sums,an...原创 2019-02-21 15:15:42 · 637 阅读 · 0 评论 -
蓝桥杯历届试题 买不到的数目
题目链接:http://oj.youdao.com/problem/P1273AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int a,b; while(cin>>a>>b) { cout<<a*b-a-b<<endl; } retu...原创 2019-03-18 21:01:08 · 288 阅读 · 0 评论 -
杭电1870题(水题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1870求B字符的深度,我第一次是直接求B前面有多少个(,但其实忽略了一种情况就是(()B),所以怎么办呢,遇到(深度加一,遇到)深度减一代码如下:#include<bits/stdc++.h>using namespace std;int main(){ int num; s...原创 2019-02-15 10:48:48 · 226 阅读 · 0 评论 -
[蓝桥杯][历届试题]翻硬币
题目链接:http://www.dotcpp.com/oj/problem1453.html思路:这道题其实隐藏了一个条件,初始状态和目标状态不同之处肯定只有偶数处,不可能有奇数处,不然初始状态到达不了目标状态,把初始状态和目标之处的相同之处标记为0不同之处标记为1。先举一个例子1011001,是先翻中间的2个1呢还是一次翻呢,先翻中间2个1,总共的次数是6次,一次翻总共是5次,其实只要依次翻就...原创 2019-03-29 19:54:34 · 359 阅读 · 0 评论 -
康拓展开和逆康拓展开
康拓展开和逆康拓展开康托展开就是一种特殊的哈希函数把一个整数X展开成如下形式:X=a[n]n!+a[n-1](n-1)!+…+a[2]*2!+a[1]*1!其中,a为整数,并且0&amp;lt;=a&amp;lt;i,i=1,2,…,n{1,2,3,4,…,n}表示1,2,3,…,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。代表的数字 1 2 ...原创 2018-10-14 23:41:40 · 284 阅读 · 0 评论 -
C语言网1117: K-进制数
题目链接:http://www.dotcpp.com/oj/problem1117.html解题思路:这个题应该是一个递推题。可以用f[i]表示i位(最高位是第i位)K进制数的总数,那么就应该有:f[i]=(f[i-1]+f[i-2])(k-1)。解释一下:f[i]也就是i位K进制数的总数应该等于:第i-1位为0与第i-1位不为0的情况的和乘以第i位的情况数(1…k-1)(1)第i-1位为...原创 2019-03-22 20:33:25 · 395 阅读 · 0 评论 -
L2-013 红色警报(DFS或并查集求连通图)
!!!注意一定要开exist数组来记录被摧毁的城市,被摧毁数组和访问数组是不一样的!!!思路:就是对每个节点进行DFS,如果它存在于前面节点的DFS构成的连通图中或者别摧毁了就不会进行DFS,由此算出连通图的数量。每次摧毁一个城市,就一遍for循环,更新一下连通图的数量,和上次连通图的数量比较一下,再更新当前连通图的数量。#include&lt;bits/stdc++.h&gt;using ...原创 2019-03-12 11:18:04 · 254 阅读 · 0 评论 -
蓝桥杯危险系数
题目链接:http://oj.youdao.com/problem/P1277思路就是到用一个数组来记录每个节点被访问的次数,如果起点和终点之间有点的访问次数和终点的访问次数一样,那么它就是关键点。但需要注意的是:某些点它的访问次数可能是无法到达终点的,但我们还是把它的访问次数加上去了,所以我们必须用一个数组来记录访问路径,当到达终点时,再遍历整条路径,给这条路径的每个点的访问次数加一!!!...原创 2019-03-19 15:37:24 · 322 阅读 · 0 评论 -
天梯赛L2-025. 分而治之(简单去模拟图)
思路:就是先存在道路的城市,用一个结构体保存即城市x和城市y。为什么要用结构体来表示边,而不是直接a[x]、a[y]来表示城市的道路,就是体现不了两个城市之间道路的存在。摧毁一个城市,比如x,那么就存在许多的a[x]=1而a[y]=0,如果存在a[x]=0并且a[y]=0,那么就是存在道路。#include&lt;bits/stdc++.h&gt;using namespace std;s...原创 2019-03-10 16:00:23 · 284 阅读 · 0 评论 -
杭电1518题(深搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1518代码如下:#include<bits/stdc++.h>using namespace std;bool flag; //是否可以成功 int n,sums; //木棍数量,木棍长度总和 int stick[25]; //木棍长度数组 bool vis[25];...原创 2019-02-24 11:38:50 · 264 阅读 · 0 评论 -
杭电1181(深搜,水题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181好久没做搜索题了,就找来几道搜索题做一下,这题完全可以截取每个字符串的首和尾的字符就可以了,我懒得截取就直接开string全部存起来。这题搜索最主要的剪枝条件就是当前字符串的最后一个字符要和下一步搜索的字符串的第一个字符相同。这题的输入格式好恶心,看评论知道是只有三个测试样例的。。。。。。。...原创 2019-02-23 12:05:47 · 241 阅读 · 0 评论 -
n皇后问题
n皇后问题,也就是八皇后问题的升级版了~~~#include &lt;iostream&gt;#include &lt;cstring&gt;using namespace std;int n,m=0;int vis[3][100],a[10];void dfs(int cur) //初始化cur为0,cur代表行数{ if(cur==n) //所有皇后都已摆放完,输...原创 2018-09-12 22:20:15 · 214 阅读 · 0 评论 -
数论中的子集生成
子集生成#include &lt;iostream&gt;#include &lt;cstring&gt;using namespace std;int a[20]; //存放子集的集合//n表示元素个数和最小的不可取数,cur表示当前下标,初始值为0void print_subset1(int n,int *a,int cur) //增量构造法,每次从可取数中取一个尽可能小的数...原创 2018-10-13 15:35:06 · 163 阅读 · 0 评论