非玄学部分

正解的出现绝大多数情况下除了本身熟练了无需多想以外,就是枚举可能正确的做法。

离线?

如果要处理多个询问,只要不强制在线,一定要提醒自己:可以离线!可以离线!!可以离线!!!,离线后排序可能会导致复杂度骤降!!!

正难则反?

正着跑、倒着跑、正着跑正着算、倒着跑倒着算,
别都已经倒着跑了还正着算,可能会使你的复杂度从O(n)O(n)飙升至O(n!)O(n!)
例:一个教训

代码能短就短,最令人难受的就是像写大数据结构一样的代码,原因主要并不是害怕写长代码,而是短代码确实好看,而且易于挑错,平时积累一些奇技淫巧用上也无所谓,只要比赛能用,自己能快速懂,再奇怪也无所谓。

一元排序处理出来是错的?

试试二元排序,比如按a和b的max、min、+、-、*、/……
例:按max

图上期望只会解方程?

却发现三方会T?试试推式子,觉得是无穷循环嵌套?自己调用自己为什么不能直接在等式另一边直接用自己呢?
比如

Xi=PiA+Pi(1Pi)A+Pi(1Pi)2A+...X_i=P_i*A+P_i*(1-P_i)*A+P_i*(1-P_i)^2*A+...

可以转化为

Xi=PiA+(1Pi)XiX_i=P_i*A+(1-P_i)*X_i

(来自于例题官方题解)

卡常吗?

scanfscanfprintfprintf其实不慢,快读并不能解决大问题,实际上要注意的是:
剪枝:这就是看情况。
取模:主要是如果不爆longlonglonglong就少取模,像加法什么的,最后总起来取一个就好了,甚至可以判断大于模数就减,至于乘什么的,超过俩相乘就还是要取模的。
最关键的不能算是卡常而是优化复杂度的——预处理阶乘、逆元等做到O(1)O(1)查询来省去一个loglog

更好的替代品

ddpddp的核心就在于他的线段树维护矩阵乘法上,得已支持快速修改和查询,有妹有什么比矩阵更快的呢?其实是有的,对于一些每一位的转移都相同且有交换律的,我们有——生成函数,听着挺高大上,就是多项式,FFTFFT啥的可以快速维护,不过暴力卷也是不劣的,至于更改,就是递推或者解方程,也没啥好说的,不过时间和空间都优了不少。

玄学部分

每隔30min30min~1h1h就去上个厕所、洗把脸,可能会有灵感

训练的时候总是感觉状态不好,合理的睡眠是很重要的,既不能睡多,也不能睡少,适量熬夜第二天会很精神。