一些奇怪的坑+好东西
之前LCT的那个坑点集合 由于我 太能叨叨 弃掉了 于是 新开一个QAQ
——STL——
1.memcpy最后加的sizeof要么写整个数组要么写sizeof(int)*x 写位置可能会出一些奇奇怪怪的锅...
2.奇奇怪怪的编译错误可能是数组开太大内存崩了...
3.lower_bound(begin,end,val)需要随机访问迭代器,也就是set和map之类的会退化成nlgn 它们需要使用set.lower_bound(val)
——字符串——
1.多组数据/弹出尾部 注意%s输出的时候可能会输出奇奇怪怪的东西(丢了100分的愉快
——数据结构——
1.ST表 注意溢出 log是一个非常慢的运算 经检测至少是 lglg级别 所以尽量预处理
2.LCT splay 的时候 注意更改父亲的顺序
3.删掉单个元素可以考虑维护前缀后缀合并 或者 分治去除当前区间的套路
——树——
1.树上极小联通森林距离和的两倍=dis(i,i+1) + dis(1,n)
2.强制一条边的最小生成树 可以直接求最小生成树然后rmq
3.无向图dfs树没有横叉边
4.注意如果有fi<i的条件时 可能可以通过dfs遍历前后添加删除贡献维护答案
——强制转换——
1.(ll) 可能不是强转一整个柿子 有待研究
2.容斥的时候注意-1/1乘上加的时候 要转longlong 因为-1+mdn不影响但是三个mdn级别相加就爆掉了= =
3.define有时候会锅 所以莫名其妙的锅可以试试吧define改成函数(然而函数慢到家)
——数论——
1. i的余数求和 和 i求和的余数 不是一个东西
2.指数不能直接取模 如果是质数 可以通过费马小定理解决
3.当数论题觉得写得没问题的时候 注意是否中间爆了longlong
4.如果要对一个玩意取模 然后乘逆元爆longlong的话 可以考虑把模数变成 p*n 然后直接/n 【真实的黑科技】
5.容斥系数一定要算对啊喂!因为这个爆了30分QAQ
根据某神犇的提醒 如果不需要取模的情况下最好加上abs 可以避免脑残还可以避免0.00000输成-0.00000的情况
——多项式——
1.对于dp[x*y]=dp[x]*dp[y] x(g^i) y(g^j)
可以通过用原根映射到 dp[i+j]=dp[i]*dp[j] 然后可以做循环卷积
2.如果非要用ntt来做fft的题的时候 注意要把模数设到 最大的答案以上才可以
3.将图定向为DAG的方案数为$(-1)^n*P(-1)$P为色多项式
4.无向连通图计数
5.如果求多项式1~n次幂的第n项和(之类的) 常见套路是bsgs(注意实现)
6.可以先强制个数然后最后补组合数
7.maxmin卷积可以考虑转化为计数卷积统计答案
8.在求inv/ln/exp的时候一定把答案数组清干净了再传进去/px
——计算几何——
1.记得要设eps = =
2.注意逆时针还是顺时针
3.极角对2pi取模最好的区间是[0,2pi)
——实现——
1.凸优化二分记录答案记录的是二分的权值 最后再进行一次操作统计答案 不可以直接计算答案
2.想清楚到底是!还是~还是啥都没有...死惨.jpg
3.对于全局组合数的实现可以直接按照指数生成函数的方法 过程中直接*inv 最后整体*fac
4.注意位运算为下标的数组清空要清到2^i-1
5.多组数据清空尽量用memset(a,0,n+1<<2)
——优化——
1.DP优化先列出方程 可以通过一些相同的转移合并 例:PKUWC随机算法
2.随机序列前缀/后缀 最大值/最小值 期望个数为O(logn) 也就说对于枚举+二分来说 把枚举放到前面 然后先特判再二分 这样的话可以降一个n到logn
3.对于容斥不是很好写式子的情况可以考虑直接维护容斥的答案
4.DP想不出来的时候想想是否排序顺序可能会影响,一些DP是离散的但是换一种排序方式就会变成连续的可以维护了。
5.快速计算最长合法括号子序列 n-sn+2minsi
——题面——
1.细节!!!比如说注意j=1!!!(来源PKUSC2018最大前缀和= =)
2.数据范围!!!注意边界0 或 n的特判!!!(来源PKUSC2018真实排名)
——交互——
1.本地测试直接把代码复制粘贴到grader后面然后编译测试就好啦
这里也成为了一个记录我的锅的地方= =
无向边开两倍!!!!
输出前(+mod)%mod!
数组大一点!!!别只大1!!!
数组清空注意memset会不会死!!!
freopen一定打对!!!
暴力不要想当然!!!也要看好复杂度开对数组!!!
模数啊!!!一定看对了!!!
读题!!!看清楚再写!!!
对拍!!!正式比赛一定要对拍!!!