csp-s模拟106

T1:
  区间dp即可
 
T2:
  考虑枚举最后一步是用哪颗药爬的,然后其他的药贪心的按\(a-b\)选择即可
  有两条思路:

  一条是考虑优化贪心选择的复杂度,
  发现删去一个药之后后面的药都会向前一位,推推式子,预处理一个错位的信息就可以二分找到最多可以活到第几天
  复杂度\(O(nlogn)\)

  另一条是考虑减少每次重算的冗余:
  发现指针是单调的,考虑线段树分治,每次加入一些药,单调移动指针即可
  回退时只需要删除一些药,指针\(O(1)\)的跳回分治中上一层记录的位置,即可保证复杂度
  用线段树维护当前的药,复杂度\(O(nlog^2n)\)
 
T3:
  首先显然的是行列为点,交点为边建图(这不网络流吗?)
  然后考虑对图上的点黑白染色,表示选择或不选择,若有冲突,则无解(注意多测无解不要直接return!!!)
  否则考虑每个连通块,设其中染黑色的点有a个,染白色的点有b个,我们把这样的连通块叫做(a,b)连通块
  考虑黑白点其实是可以交换的,但一旦选择之后就不能再改变该连通块策略
  那么考虑两人的博弈,用SG函数解决
  对于(奇,奇)连通块,它一定会转移到必败状态(偶0),所以SG值为1
  对于(奇,偶)/(偶,奇)连通块,它既可以转移到必胜(奇1),又可以转移到必败(偶0),所以SG值为2
  对于(偶,偶)连通块,它只能转移到必胜状态(奇1),所以SG值为0
  把所有SG值异或起来看是否是0就行了

posted @ 2019-11-12 17:36  G_keng  阅读(128)  评论(0编辑  收藏  举报