快速恢复智商指北

lyc 即将进入为期 [12,20][12,20] 天的文化课生活。

这份指南写给肝完了文化课的 lyc(

写题的时候要注意的东西

  • 寻找题目性质
  • 分析样例
  • 根据样例/分析猜结论/性质(单调性啥的
  • 不会就想暴力然后优化
  • 反向思考(反向转化问题
  • 计数题可以试着往dp的方向想
  • 觉得代码很复杂的时候尝试简化思路/写法
  • 问题转化(啥的
  • 多测不清空,爆零两行泪(
  • CF交题之前先Debug(自己xjb造几组数据说不定就查出来了orz
  • 字典序相关的一定是贪心
  • 遇到什么奇妙的锅先开ll交一发
  • CF1307DCF1304E总结出来的一点东西:考虑修改之后产生的变化/答案的可能状态
  • 数据8太好处理的时候排个序(废话
  • 寻找结论的一般性
  • 不要急着否定简单的思路(至少尝试找一下反例/算一下样例
  • 自闭的时候看一下反例符不符合数据约定
  • 考虑一下自己的思路有没有锅(主要是有没有考虑完整所有的情况
  • 手造数据是非常有用的debug方法(如果你没有标程来对拍的话
  • 对于比较困难的题出思路之后确认一下思路有没有锅,把细节想好,确认复杂度
  • 交互题可以写if (cases>n) return 1;之类的东西来确认是因为输出过多还是答案错误导致的错误
  • 构造题的一般思路是先构造一个一般情况再做修改 / 考虑特殊情况
  • 构造(计数类型的(?))题要用“构造”的思想想(迷惑)
  • 手玩数据quq
  • 图里删边(总之是按时间删除东西的操作)**(甚至是加边)**可以考虑倒着来
  • 很多题也许比你想得简单
  • 不会写就去找性质 / 结论,结论很多情况下对于计数题很重要
  • 打表天下第一,证个鬼的正确性(
  • 约数相关的东西可以考虑对于每一个质因数分别计算贡献
  • 思考问题的组合意义
  • 用数据结构维护值域
  • 多次相同操作但是 nn 范围较小可以考虑矩阵快速幂 / 倍增
  • 把有序数对变为无序数对
  • 寻找永远不变的量
  • 不要想 / 建模得太复杂,根据题意模拟
  • 看到网格图想 dp
  • 想 dp 发现有环就最短路 / 网络流
  • 贪心找答案有的性质(答案的状态一定是balabala 否则有更好的方案)
  • 正式比赛 / NOIp 模拟赛交题之前先 g++ a.cpp -Wall来确保没有被C++11 / UB 坑
  • 构造题考虑把原始状态转移到一个特殊状态(全 00 之类的)然后转移到目标状态
  • 打OI比赛的时候一定要先写暴力,一定不要懒得动手,写完一定要对拍
  • 有不太好做的多重限制考虑枚举 / 二分答案
  • 数据结构维护 + 贪心

恢复训练

  • Codeforces 2000 - 2100 的题(返 璞 归 真
  • 打几场vp,拿小号打几场Div2
  • 快速过一遍暑假 wqy 讲的图论,几道图论题