ACM常⽤模板题基础.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)

专注于各类教育类资料、资格考试类资料、实用模板类资料、行业资料等十余年。

1亿VIP精品文档

相关文档