GDKOI2016 题解

5 篇文章 0 订阅
5 篇文章 0 订阅

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 ,设两个权值分别是a b ,那么每个点有新权值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
  //留坑待填

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值