GDKOI2016 题解

day 1

  
  Problem 1. 魔卡少女
  题意:动态维护区间内所有子序列的异或和的和,单点修改。
  解法:先做一个序列的异或前缀和Si=AiSi1 ,于是查询就变成了询问[l,r] 内的i<jSjSi 。注意到元素的大小只有1000 ,也就是不超过10个二进制位,这样我们可以维护每个位在区间内的个数,开10棵线段树,每次查询就是查询区间内0和1的个数然后乘一下,修改Ap=x 的话就看新元素和旧元素每个位上有没有变化,如果有就对对应位的线段树上的[p+1,n] 区间将0和1的个数交换一下即可。时间复杂度O(n+10mlogn)
  
  Problem 2.不稳定的传送门
  题意:太麻烦了不说了。
  解法:设fi 表示第i 个点到终点的最小期望代价。假设现在已经选了一些门并按照最优顺序走了,然后要判断走下一个门是否可以更优。设下一个门能够走到j 这个点,花费和期望分别是w,p ,如果更优,就有fi>p(fj+w)+(1p)(fi+w) ,化简一下可以得到w/p+fj<fi 。于是我们就可愉快地按照w/p+fi 排序然后贪心直到不能扩展为止,并继续往前计算f 。时间复杂度O(nlogn) 。(似乎这个做法不是标解?然而whx看了题几min之后就看出了这个做法来了太强啦!
  
  Problem 3.寻宝
  题意:太麻烦了不说了。
  解法:先拓扑排序一次判断那些点是有用的,然后按照分数规划的模型二分答案t ,设两个权值分别是ab ,那么每个点有新权值atb ,对这个新图建一个最大权闭合图就可以了。因为是网络流所以复杂度比较玄学。
  
  Problem 4.地图
  题意:给一个矩阵,矩阵上的某些点是不知道状态的,计算使得给定(或者自己定)的三个点联通的方案数。
  解法:无脑插头DP,状态存联通块的最小表示法,直接枚举每个位置填什么然后直接转移即可。

day2

  Problem 1.染色大战
  题意:???
  解法:无脑博弈记忆化大爆搜,状态压缩下棋盘的局面,记忆化一下,然后爆搜枚举,当前状态要转移到下一个对手最劣状态就可以了。
  
  Problem 2.QT与泰剧
  题意:求[l,r] 内和r 模3同余且不完全由2,3,5,7 组成的数的个数。
  解法:数位DP,设f[i][j][k] 表示第i 位取j 这个数且模3余k 的不合法数的个数,设g[i][j][k] 表示第i 位取j 且模3余k 的数的个数,利用这两个方程直接计算即可。
  
  Problem 3.项链
  题意:太麻烦了不说了。
  解法:将原串复制一次接到后面之后,做一次manacher,设原串长度为n ,实际上就是要求两个点i,j,|ij|n 使得以这两个点为中心的回文串相邻并且长度和最大。这个一个log爱怎么搞怎么搞。(过一会补接近线性的做法)。
  
  Problem 4.小学生奥数
  题意:求ni=1i1modpk ,其中p105
  解法:太长了新开一篇文。
  http://blog.csdn.net/GEOTCBRL/article/details/50725904
  //留坑待填

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章