关于csp-s的各种问题整理
前言
脑残选手在线 WA 0,由于各种各样的诡异问题,在此做一个整理,希望不再出现!!!
CSP-S RP++++++++++
复杂度
- 当求解的内容形如:“ ∑(ai ± bi)或者 ∏(ai ± bi)”,考虑分开求解 ai 和 bi 。
- 当需要在三个数组里面取出需要满足一些条件的值的时候,可以先对两个做出部分限制,排序最后一个,二分求解。
- 如果看见是结论题,并且样例较巧,可以尝试带入结论看是否合法而不是正推。
- 修改一个序列里面的一个数后对数组再次求解,可以直接考虑整体。
- 没有想法的时候先去看约定,假如其中有形如 “ 在x%的数据中,保证数据构成一条链 ”这样的有特殊性质的话,就可以从特殊性质推起。【注意:如果出现在100%之后就是特殊构造,没什么参考价值了。
- 倍增是个好东西。
细节
- 数据范围中只要有一个涉及到运算的,哪怕是减法,只要规模达到1e8及以上,就要开始开long long
- #define itn long long 这种智障错误我也是惊了Σ(っ °Д °;)っ
- 关于freopen(“test1.in”,“r”,stdin);这种写错文件名的脑残错误?没脸见人QAQ
- 数组名什么的,不要用了Q,再用 q。
- 数据的读入时候,注意不要 int 用 %lld,long long用 %d!
- 在 j 的循环中 i++,我给自己点个赞!
- 数组爆栈之类的一定要注意,基本上1e5的队列又有可能会出现爆栈的情况了。
算法
- SPFA什么的,我死了。
- 不要再做n2过百万的梦想了……
- 分层图在写的时候一定注意dis的初始化,不能memset,一定要手动循环。
- 所有手动初始化的时候都要注意要不要照顾到 i=0,不然就都带上。
- 分块写的时候注意块的编号,记得把没分到整块中的最后一点另外开一个块。
- 分块的时候,需要调用块的大小的时候一定要用 R[ ] - L[ ],不能使用siz。
- tarjan的时候注意割点和割边,点双和边双写法上面的不同。
- 支配树一定要写上倍增LCA,不然会发生什么我也不知道。
- 基环树DP的时候,两次DP不用重新memset。
- 关于圆方树,能不用就不要用吧,毕竟是算得上最不熟悉的了啊。
- 差分约束一定要先在纸上面列一下。
- 树剖一定慎用,一遍打不对就弃了,等会再看。
- 贪心一定要对拍,别的可以不对拍,贪心必须对拍。
- lower_bound和upper_bound一定要小心,一个是大于等于,一个是大于
- 树上的问题,点数n,边数m,n==m,是基环树!
小学奥数的三个整数拆分结论啦啦啦啦【小凯的疑惑的心理阴影
1.求问有多少种方法可以把一个整数拆成两个自然数的和?
2.将一个数拆分成三个自然数的和 ( n≥3 )
ans1 = (n+1)*(n+1)*(n-2)/ 27 (n%3==2)
ans2 = (n+2)*(n-1)*(n-1)/ 27 (n%3==1)
ans3 = n3/ 27
3.有多少种方法可以把一个数表示成有顺序的三个数的和?
ans = (n-1)*(n-2)/ 2;
CSP-S 2019 RP+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---OI是信仰,是真正应该被认真以待的东西.....!