取 名 为 故 事,因 为 已 逝,因为有未来
dsak与数位dp八字不合,写一遍挂一遍,调啊调。
置顶系:
- 比赛的时候最好还是把输入输出格式仔细读一遍,再看一下输入输出或者手推一下,这样可以加强对格式的印象,避免格式错误。手推样例能一定程度上避免读错(或理解错)题。
- 写完代码还是检查一下,特别是要取模的题,看有没有漏掉的地方
- 写爆搜的时候,可能会用到全局数组存值,但是这个数组不能有过多的操作,因为那样数组就改变了,然后回溯的时候就出问题。
- 数组越界会乱跳,注意特判。
- 一眼斜率优化的题,还可能针对斜率优化(CSP会这么毒瘤的吗?)
- 从x到y,再从y到z的费用和什么的,y点费用会重复计算,尤其这个费用是预处理的时候,需要注意。
- 容斥bug,关于那个函数,容斥有时候是减法,不能当加法写,最后要把答案变成正整数
- 组合数如果数据范围小,可以用杨辉三角递推求解(好写好调,不用关心模数,逆元)
错误&问题(比较zz的错误):
- n*m<=…,不要开根号…
- 读入要写读入优化(也许)
- 数组开小
- 文件名打错
- 重边
- 没有开long long
- 树状数组不能用0会死循环,边界什么的;
- 局部变量初值,以及最大最小值得初值;
- lld写成d
- 打表忘删
- 题目看错
- 思考方向错误(绝望。。。)
- 心态要稳(瞎猜结论要狠??)
- 有递归的时候有些变量要定局部,不然等它递归回来,值就改变了
- 最小值初值还是炸了
- long long 1e18以内的都可以处理,快速乘其实很慢
- 运算符优先级(位运算优先级极低,甚至低于比较符),位运算最好写括号
- 无向图自环连一条边即可,度数算1
- i,j写反…
- 大写小写字母写反
- 数据范围少看了一个0
- 复制粘贴细节没有改
- 顺逆时针??园转区间细节
- 注意是双向边还是有向边
技巧:
- 一定代价可以取得的最大价值转化为取得一定价值所需最小代价,二分搞一下。
- 题目抽象化?
- xor的东西拆成每一位来算
- n>=m,n*m<=…,可以确定m的数据范围(一般会比较小)
- 建图的时候,一个点的信息是两维,但是这种点数并不多,用map离散化压成一位即可(这样做的前提是,建完图后,点的信息就无用了)
- 求满足xxxx条件的区间数,可以考虑分治
- 求选k个数,这k个数的最大公约数最大是多少,考虑枚举最大公约数,判它的倍数个数是否有k个即可,复杂度约O(N ln N),N为值域大小
- 有些题目,看着像结论题或者什么的,想不出来,可以先写暴力,也许会得到些许启发(或者发现就是个暴力的优化)
- 时间复杂度和空间复杂度的计算。看似暴力的东西不一定真的暴力。
- 无环图的连通块个数=点数-边数