ImageVerifierCode 换一换
格式:DOCX , 页数:125 ,大小:255.87KB ,
资源ID:16609967      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16609967.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(上海交通大学ACM算法模板gai文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

上海交通大学ACM算法模板gai文档格式.docx

1、2. 字典树3. 后缀树4. 线段树5. 并查集6. 二叉堆7. 逆序数(归并排序)8. 树状DP9. 欧拉路10. 八数码11. 高斯消元法12. 字符串匹配(KMP算法)13. 全排列,全组合14. 二维线段树15. 稳定婚姻匹配16. 后缀数组17. 左偏树18. 标准RMQ-ST19. 度限制最小生成树20. 最优比率生成树(0/1分数规划)21. 最小花费置换22. 区间K大数23. LCA - RMQ-ST24. LCA Tarjan25. 指数型母函数26. 指数型母函数(大数据)27. 单词前缀树(字典树+KMP)28. FFT(大数乘法)29. 二分图网络最大流最小割30.

2、混合图欧拉回路31. 无源汇上下界网络流32. 二分图最小点权覆盖33. 带约束的轨道计数(Burnside引理)34. 三分法求函数波峰35. 单词计数,矩阵乘法36. 字符串和数值hash37. 滚动队列,前向星表示法38. 最小点基,最小权点基第一章 常用函数和STL一.常用函数#includeintgetchar(void);/读取一个字符,一般用来去掉无用字符char*gets(*str/读取一行字符串stdlib.h*malloc(size_tsize/动态内存分配,开辟大小为的空间qsort(*buf,num,size,(*compare)(const*,const*)/快速排序

3、Sample:compare_ints(void*a,b)int*arg1=(int*)a;int*arg2b;if(*arg1*arg2return-1;else=0;1;array-2,99,0,-743,2,3,4;array_size7;array,array_size,sizeof(int),compare_intsmath.h/求反正弦,arg-1,1,返回值-pi/2,+pi/2doubleasin(arg/求正弦,arg为弧度,弧度=角度*Pi/180.0,返回值-1,1sin(/求e的arg次方exp(/求num的对数,基数为elog(num/求num的根sqrt(/求bas

4、e的exp次方pow(base,expstring.h/初始化内存,常用来初始化数组memset(buffer,ch,countthe_array,sizeof(the_array)/printf是它的变形,常用来将数据格式化为字符串sprintf(*buffer,*format,.sprintf(s,%d%d,123,4567);/s=1234567/scanf是它的变形,常用来从字符串中提取数据sscanf(result100=24hellostr100;num;result,%d%snum,str/num=24;str=;/字符串比较,返回值0代表str10代表str1str2strcm

5、p(*str1,*str2二.常用STL标准container概要vector 大小可变的向量, 类似数组的用法, 容易实现删除list 双向链表queue 队列, empty(), front(), pop(), push()stack 栈, empty(), top(), pop(), push()priority_queue 优先队列, empty(), top(), pop(), push()set 集合map 关联数组, 常用来作hash映射标准algorithm摘录for_each() 对每一个元素都唤起(调用)一个函数find() 查找第一个能与引数匹配的元素replace()

6、用新的值替换元素, O(N)copy() 复制(拷贝)元素, O(N)remove() 移除元素reverse() 倒置元素sort() 排序, O(N log(N)partial_sort() 部分排序binary_search() 二分查找merge() 合并有序的序列, O(N)C+ String摘录copy() 从别的字符串拷贝empty() 判断字符串是否为空erase() 从字符串移除元素find() 查找元素insert() 插入元素length() 字符串长度replace() 替换元素substr() 取子字符串swap() 交换字符串第二章 重要公式与定理1.Fibonac

7、ci Number0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 Formula:2.Lucas Number1, 3, 4, 7, 11, 18, 29, 47, 76, 123.3.Catalan Number1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012 Application:1)将 n + 2 边形沿弦切割成 n个三角形的不同切割数n = 2;n = 3;2)n + 1个数相乘, 给每两个元素加上括号的不同方法数 (1 (2 3), (1 2

8、) 3) (1 (2 (3 4), (1 (2 3) 4) , (1 2) (3 4), (1 (2 3) 4), (1 2) 3) 4)3)n 个节点的不同形状的二叉树数(严数据结构P.155)4)从n * n 方格的左上角移动到右下角不升路径数4.Stirling Number(Second Kind)S(n, m)表示含n个元素的集合划分为m个集合的情况数或者是n个有标号的球放到m 个无标号的盒子中, 要求无一为空, 其不同的方案数Special Cases:5.Bell Numbern 个元素集合所有的划分数6.Stirling7.Sum of Reciprocal Approxima

9、tionEulerGamma = 0.57721566490153286060651209;8.Young TableauYoung Tableau(杨式图表)是一个矩阵, 它满足条件:如果格子i, j没有元素, 则i+1, j也一定没有元素如果格子i, j有元素ai, j,则i+1, j要么没有元素, 要么ai+1, j ai, jYn代表n个数所组成的杨式图表的个数9.整数划分将整数n分成k份, 且每份不能为空, 任意两种分法不能相同1) 不考虑顺序for(intp=1;p=np+)i=p;i=1j-)dpij+=dpi-pj-1;cout 0; V /= Base) DataLen+ =

10、 V % Base; xnum(char S); xnum& operator=(const xnum& V) Len = V.Len;memcpy(Data, V.Data, Len * sizeof *Data); return *this; int& operator(int Index) return DataIndex; int operator(int Index) const return DataIndex; void print() printf(%d,Len=0?0:DataLen-1); for(int i=Len-2;i=0;i-) for(int j=Base/10;

11、j/=10)printf(,Datai/j%10);xnum:xnum(char S) int I, J;DataLen = 0 = 0;J = 1; for (I = strlen(S)-1; I I-) DataLen += (SI - 0) * J;J *= 10; if (J = Base) J = 1, Data+Len = 0; if (DataLen 0) Len+;int compare(const xnum& A, const xnum& B) int I; if (A.Len != B.Len) return A.Len B.Len ? 1 : -1; for (I = A

12、.Len - 1; I = 0 & AI = BI; I-); if (I BI ?xnum operator+(const xnum& xnum R;int I;int Carry = 0; for (I = 0; I A.Len | I I+) if (I A.Len) Carry += AI; B.Len) Carry += BI; RI = Carry % Base;Carry /= Base;R.Len = I;return R;xnum operator-(const xnum&R.Len = A.Len; int I; R.Len; RI = AI - Carry; B.Len)

13、 RI -= BI; if (RI 0 & RR.Len - 1 = 0) R.Len-;xnum operator*(const xnum& A, const int B)if (B = 0) return 0; xnum R;hugeint Carry = 0; A.Len | Carry A.Len) Carry += hugeint(AI) * B;RI = Carry % Base; Carry /= Base; if (B.Len = 0) return 0; A.Len; hugeint Carry = 0; for (int J = 0; J J+) if (J B.Len)

14、Carry += hugeint(AI) * BJ; if (I + J = R.Len) RR.Len+ = Carry % Base; else RI + J = Carry % Base; return R;xnum operator/(const xnum&hugeint C = 0;= 0; I-)C = C * Base + AI;RI = C / B;C %= B; R.Len = A.Len; return R;/divxnum R, Carry = 0;int Left, Right, Mid; I-) Carry = Carry * Base + AI;Left = 0;R

15、ight = Base - 1; while (Left Right) Mid = (Left + Right + 1) / 2; if (compare(B * Mid, Carry) (istream& In, xnum& V) char Ch; for (V = 0; In Ch;) V = V * 10 + (Ch - if (cin.peek() = ) break; return In;ostream& operator(ostream& Out, const xnum&Out J /= 10) Out = n-m+1; i -)sum = sum*i; for(i = 1; i

16、= m; i +)sum = sum/i;return sum;#define MAXN 9999#define DLEN 4class BigNum private:int a1000;/可以控制大数的位数int len; /大数长度public:BigNum() len = 1;memset(a,0,sizeof(a); BigNum(const int);BigNum(const char*); BigNum(const BigNum &BigNum &operator=(const BigNum & BigNum operator+(const BigNum &) const; BigNum operator-(const BigNum & BigNum operator*(const BigNum & BigNum operator/(const int & BigNum operator(const int &

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1