一些idea
二分答案似乎和最小生成树有着不可描述的奇怪关系。(滑稽
联赛级别的在矩形上乱搞的题无非几个思路(按出现概率排序):建图,二维前缀和,dp
涉及到求合法区间数的问题往往要用到桶、等差数列等思想,或者尝试求最靠左/靠右的合法端点,总之避免ans++;
tarjan、拓扑、DAG上dp他们三个卡在一起。
二分答案是骗分利器,也有很大可能是正解,当然使用不当会导致爆0。分析对单调性是关键。
单调栈可以求最大值控制区间,这些区间构成一棵完全二叉树,可以启发式合并。
涉及到区间和整除某个数的问题先想余数桶。
NOIP模拟13的优美序列这道题有建图跑Tarjan/线段树扫描线/预处理答案之后毒瘤分块/析合树四种做法,都挺好的。
lower_bound可以水过很多看似要用数据结构的题。
把一个数拆成p进制的时候要从高位往低位拆。
边权为1的图求最短路考虑bfs。边权为1和0的图求最短路考虑双端队列bfs。
1500的数据有可能是bitset。($O(\frac {n^3}{32})$)
二进制枚举子集
for(int j=W;j;j=(j-1)&w);
STL清空的骚操作:
set<int> s; s.insert(...); set<int> swp; swap(swp,s);
数组负数下标处理:
const int N=2e5+5; int a[N]; int *b=a+100000; cout<<b[-233]<<endl;
兴许青竹早凋,碧梧已僵,人事本难防。