小技巧
小结论
数学相关:
-
\(\displaystyle\sum_{k=1}^n \frac{1}{k} = \ln n\)
-
\(C_n^m = C^{m-1}_{n-1} +C^m_{n-1}\)
-
\(C^m_n = \frac{n}{m} * C^{m-1}_{n-1}\)
-
\(C^0_n + C^1_n + \cdots + C^n_n = 2^n\)
-
\(C_n^k\) k为奇数相加等于k为偶数相加
-
n/x下取整的可能值最多有根号n个
-
1~N内质数个数大概为 \(\frac {N}{\ln N}\)
图论trick:
-
关于三点两两求lca
- 其中有两个lca相同(求另一个可以三个一起异或起来)
- 不同的也是深度最大的那个
- 不同lca的三点在树上的分叉点
- 换根lca就是分叉点
-
关于源点和汇点
- 求一些点到另一些点的最短路可以建超级源点和汇点
- 一些点向另一些点连边可以新建源点和汇点
-
分层图可以解决特殊边的问题, 可以通过dp减少空间
-
最大/小值多想想生成树
人类智慧:
- 将点不断分成两个集合, 使每两点至少有一次在不同的集合, 可以根据某一位在二进制上是否为一
基础算法与奇技淫巧:
-
二分大于k的值设为一
-
无法直接dp可以试试先贪心排序
-
区间操作没准可以变成差分
-
闲的没事可以试试倒序操作
-
最大值最小, 最小值最大试试二分
-
实在想不出来学会面向数据编程, 小数据暴力, 大数据瞎搞
-
将数据分块, 大范围暴力, 小范围存储
-
逆序问题可以先进行排序
-
整体求值可以化为每个部分对答案的贡献, 在加上数据结构或重新化为另一个整体
方法:
-
主元, 让你的式子的变量逐渐有某种规律(靠人类智慧
-
转化, 将一个问题转化为另一个已知问题(可能有多步转化
-
放弃, 适时的放弃能让你拿到更多的分数
心态和考场trick:
- 心态, 我会大家会, 我不会大家也会, 我会不会大家都会, 无所谓(滑稽
- 浏览一遍题目, 看看自己最少能拿多少分, 掌握最佳的分配时间
- 尝试hack自己, 用边界条件和细节问题
- 留出一个小时左右打对拍, 检查是否MLE或没开够
- 做不出题时感觉题目很奇怪多半是题看错了
- 别的选手使劲敲键盘, 那就跟着敲几下, 吓唬一下别人(滑稽
- 想出题赶紧写, 调过样例, 去个厕所, 想不出来, 去个厕所, AK稳了, 去个厕所(滑稽
- 尽量吃熟悉的食物
- 检查时再读一遍题, 看看有没有输出"IMPOSSIBLE"啥的
- 尽管爆零, 走出考场时要大喊"我 AK 了", 不留遗憾, 涨涨人品(滑稽
- to be continued