关于csp-s的各种问题整理

前言

  脑残选手在线 WA 0,由于各种各样的诡异问题,在此做一个整理,希望不再出现!!!

  CSP-S RP++++++++++

复杂度

  1. 当求解的内容形如:“ ∑(ai ± bi)或者 ∏(ai ± bi)”,考虑分开求解 ai 和 bi 。
  2. 当需要在三个数组里面取出需要满足一些条件的值的时候,可以先对两个做出部分限制,排序最后一个,二分求解。
  3. 如果看见是结论题,并且样例较巧,可以尝试带入结论看是否合法而不是正推。
  4. 修改一个序列里面的一个数后对数组再次求解,可以直接考虑整体。
  5. 没有想法的时候先去看约定,假如其中有形如 “ 在x%的数据中,保证数据构成一条链 ”这样的有特殊性质的话,就可以从特殊性质推起。【注意:如果出现在100%之后就是特殊构造,没什么参考价值了。
  6. 倍增是个好东西。

细节

  1. 数据范围中只要有一个涉及到运算的,哪怕是减法,只要规模达到1e8及以上,就要开始开long long
  2. #define itn long long 这种智障错误我也是惊了Σ(っ °Д °;)っ
  3. 关于freopen(“test1.in”,“r”,stdin);这种写错文件名的脑残错误?没脸见人QAQ
  4. 数组名什么的,不要用了Q,再用 q。
  5. 数据的读入时候,注意不要 int 用 %lld,long long用 %d!
  6. 在 j 的循环中 i++,我给自己点个赞!
  7. 数组爆栈之类的一定要注意,基本上1e5的队列又有可能会出现爆栈的情况了。

算法

  1. SPFA什么的,我死了。
  2. 不要再做n2过百万的梦想了……
  3. 分层图在写的时候一定注意dis的初始化,不能memset,一定要手动循环。
  4. 所有手动初始化的时候都要注意要不要照顾到 i=0,不然就都带上。
  5. 分块写的时候注意块的编号,记得把没分到整块中的最后一点另外开一个块。
  6. 分块的时候,需要调用块的大小的时候一定要用 R[ ] - L[ ],不能使用siz。
  7. tarjan的时候注意割点和割边,点双和边双写法上面的不同。
  8. 支配树一定要写上倍增LCA,不然会发生什么我也不知道。
  9. 基环树DP的时候,两次DP不用重新memset。
  10. 关于圆方树,能不用就不要用吧,毕竟是算得上最不熟悉的了啊。
  11. 差分约束一定要先在纸上面列一下。
  12. 树剖一定慎用,一遍打不对就弃了,等会再看。
  13. 贪心一定要对拍,别的可以不对拍,贪心必须对拍。
  14. lower_bound和upper_bound一定要小心,一个是大于等于,一个是大于

暂时先这样,这几天再看见有什么再补充吧!

猜你喜欢

转载自www.cnblogs.com/qxyzili--24/p/11834016.html