1、树的重心(树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心)
2、O(n^2)TSP:
3、set排序
4、Java A+B
5、ex_gcd:
6、逆元7、卡特兰数公式:F【n+1】=(4*n-2)/(n+1)*F【n】;
8、2-Sat+输出可行解。
9、转负二进制:
10、最长递减子序列(nlogn)
11、带权并查集:
12、并查集13、最小表示法
14、优先队列:
15、01字典树贪心查询+建立+删除
16、set使用实例1+lower_bound(val);
17、线段树,最大值查询位子。
18、Cnm%
19、预处理素数
20、分解质因子:21、nlogn LIS
22、最长不递减
23、Floyd最小环
24、分组背包
25、后缀模???26、01分数规划
当有求:Σ(a【i】)/Σ(b【i】)的最大(小)值的时候,我们可以将问题转化变成减法:
设定函数F(L)=Σ(a【i】)-L*Σ(b【i】);
若此时F(L)>=0,那么肯定有Σ(a【i】)-L*Σ(b【i】)>=0,那么就有:Σ(a【i】)/Σ(b【i】)>=L;
根据化出的等式可以得知,我们有比L更大。那么我们这里可以二分枚举这个L,同时也就是在二分枚举最终的答案。
若有F(L)>=0,我们要增大答案,相反减小答案即可。
27、离散化+Bfs
FZU 2235
28、Java求斐波那契数列
29、三分查找(int)
30、Hash
31、倍增LCA:
32、树链剖分最基础操作:
33、单调队列基础操作34、斜率优化Dp