ACM在线模版-f-zyj

https://blog.youkuaiyun.com/f_zyj/article/details/51594851

 

ForeWord
六月六开始(话说,开始的日子真是个吉利的日子)到七月廿六,五十天整,终于将ACM在线模版整理完毕,想想还有点小激动呢~

话说,我为什么执着于整理这个模板呢?既费时又费力,差不多,五十天都在忙这个。 
想来,原因挺多的,毕竟网上模版那么多,如果单单只是其中任何一条存在,我一定不会这样卖力整理。

最直接的原因,上一次的ACM竞赛,让我深深认识到了模版的重要性,也让我感到了不适,比赛时很乏力。

说起来不适,就不得不承认一点,我的知识储备量严重不足,不足以驾驭模版,至于另一点则是对模版不熟悉,无法快速查阅。其实还有第三点原因,这个原因只会出现在我这种人面前,那就是编码规范问题。

很多人,一开始就没有养成严格的编码规范,所以平时看到一些不是太规范的代码也没有什么不适,而像我这种执着于编码规范的人,已经出现了强迫症,看着那些不是太舒服的代码,很容易急火攻心。说起规范,其实有很多种,但是让人最一目了然的,我想一定不是那些能省则省的编码(这是我要自己重新整理的重要原因)。

这样,待到以后ACM竞赛时,我就可以导出此模版,打印好(^o^)/~那么竞赛一定会如虎添翼的,模版出奇迹嘛~~~

说起来间接原因,主要是两点,首先是,通过整理模版,我可以快速建立起知识体系,在整理的过程中,全部是手打,所以对模版的体系很清晰,这也成就了我的知识体系的雏形。其次,在以后的学习、刷题过程中,可以通过这个在线模版快速查找,出现问题和漏洞快速修改,当然也很希望有志同道合的人能够给我提出错误,帮助我完善这份模版。

其实,还有辣么一丢丢小心思是,我的优快云排名可以提前很多……浏览量也在快速增加,这是一个令人兴奋的事-_-#

PS:为避免模版整理后重复性过高,使其冗杂,一律不添加头文件和命名空间。欢迎提出模版修改建议~~~

Index
分类细则
说起分类准则,我也是很头疼,毕竟对于很多算法,他并不是单调的,而是多方面的都挂得上钩。所以,从始至终,分类准则一直都是我很纠结的问题。 
经过思量,首先分出比较主流的几类:Number、Graph、Network、Structure、Geometry; 
接着,考虑到C++是ACM的重头戏,而STL又是其中浓墨重彩的一笔,所以专门分出一类STL来总结一下; 
然后又分出String一类,毕竟字符串相关算法也是挺多的啊; 
最后,总得有一类Other吧!

虽说,分类分好了,可是有的算法真的不知道归到哪一类更合适,因为总有些算法既涉及到数论,也会涉及到数据结构,或者其他情况也时常有。但是为了避免重复,我只好依自己拙见,把他放在了自己感觉最合适的分类中。
 

 

1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 1.3 DFS 4 1.3.1 割顶 6 1.3.2 桥 7 1.3.3 强连通分量 7 1.4 最小点基 7 1.5 拓扑排序 7 1.6 欧拉路 8 1.7 哈密顿路(正确?) 9 1.8 Bellman-ford 9 1.9 差分约束系统(用bellman-ford解) 10 1.10 dag最短路径 10 1.11 二分图匹配 11 1.11.1 匈牙利算法 11 1.11.2 KM算法 12 1.12 网络流 15 1.12.1 最大流 15 1.12.2 上下界的网络的最大流 17 1.12.3 上下界的网络的最小流 17 1.12.4 最小费用最大流 18 1.12.5 上下界的网络的最小费用最小流 21 2 数论 21 2.1 最大公约数gcd 21 2.2 最小公倍数lcm 22 2.3 快速幂取模B^LmodP(O(logb)) 22 2.4 Fermat小定理 22 2.5 Rabin-Miller伪素数测试 22 2.6 Pollard-rho 22 2.7 扩展欧几里德算法extended-gcd 24 2.8 欧拉定理 24 2.9 线性同余方程ax≡b(mod n) 24 2.10 中国剩余定理 25 2.11 Discrete Logging(BL == N (mod P)) 26 2.12 N!最后一个不为0的数字 27 2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3 前缀和A[1]+…+A[p] 34 3.3.4 一个二维树状数组的程序 34 3.4 线段树 35 3.5 字符串 38 3.5.1 字符串哈希 38 3.5.2 KMP算法 40 4 计算几何 41 4.1 直线交点 41 4.2 判断线段相交 41 4.3 三点外接圆圆心 42 4.4 判断点在多边形内 43 4.5 两圆交面积 43 4.6 最小包围圆 44 4.7 经纬度坐标 46 4.8 凸包 46 5 Problem 48 5.1 RMQ-LCA 48 5.1.1 Range Minimum Query(RMQ) 49 5.1.2 Lowest Common Ancestor (LCA) 53 5.1.3 Reduction from LCA to RMQ 56 5.1.4 From RMQ to LCA 57 5.1.5 An<O(N), O(1)> algorithm for the restricted RMQ 60 5.1.6 An AC programme 61 5.2 最长公共子序列LCS 64 5.3 最长上升子序列/最长不下降子序列(LIS) 65 5.3.1 O(n^2) 65 5.3.2 O(nlogn) 66 5.4 Joseph问题 67 5.5 0/1背包问题 68 6 组合数学相关 69 6.1 The Number of the Same BST 69 6.2 排列生成 71 6.3 逆序 72 6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值