- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第1页共78页2019/3/95:46下午
ACM常用模板(+模板题)(基础)
目录
大数二分
枚举排列子集生成n皇后回溯并查集
树状数组
KMP,Sunday,BM01背包,完全背包
最长(不)上升或下降子序列最长公共子序列
拓扑排序
欧拉路径和回路搜索
最小生成树最短路
GCD和LCM
埃拉托斯特尼筛法
唯一分定理扩展欧几里得欧拉函数
快速幂
矩阵快速幂
第2页共78页2019/3/95:46下午
说明
虽然只打了不到一年的ACM,但是在ACM中一些算法以后还是可能用到的,在这里进行一个小小的总结,总结了一些简单常见的算法模板(比较适合新手)
模板终究只是模板,最好还是自己真正掌握,经常依赖模板,只是自己还没掌握的表现;
本人只是一个ACM的小白,不是很全,代码也写的坑坑洼洼。。。,大佬勿喷,可能以后学习了新的算法再补过来,主要还是方便以后自己复习。
大数
加法,乘法模板
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//题目链接:/problem?id=2506
//题目大意:就是问你用2*1,1*2,2*2的砖拼成2*n的长方形,有多少种拼法//解题思路:考虑n的时候,假设我们已经铺好了n-1块砖,第n块只能竖着放
//假设我们已经铺好了n-2块砖,最后两列有3种方式,但是其中有一种方法和//所以f[n]=2*f[n-2]+f[n-1]
#includestdio.h
#includeiostream#includestring.husingnamespacestd;
constintmaxn=10000+10;
//加法
stringbigIntegerAdd(strings1,strings2){
inta[maxn],b[maxn];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
intlen1=s1.size(),len2=s2.size();
intmaxL=max(len1,len2);
for(inti=0;ilen1;i++)a[i]=s1[len1-1-i]-0;
for(inti=0;ilen2;i++)b[i]=s2[len2-1-i]-0;
for(inti=0;imaxL;i++){
if(a[i]+b[i]=10){
inttemp=a[i]+b[i];
a[i]=temp%10;
a[i+1]+=(temp/10);
}
elsea[i]+=b[i];
第3页共78页2019/3/95:46下午
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
}
stringc=;
if(a[maxL]!=0)
c+=a[maxL]+0;
for(inti=maxL-1;i=0;i--)c+=a[i]+0;
returnc;}
//乘法
stringbigIntegerMul(strings1,strings2){
inta[maxn],b
原创力文档


文档评论(0)