GDKOI2016 题解

DAY1

P1.魔卡少女

抽象题意:动态维护一个区间内,所有的连续子串异或值和。

方法:很显然,我们可以想到用线段树来做,

于是我就花掉了整一场比赛的时间去搞这题

我们先开10*2+1+1棵线段数 (ai<=1000) ,每棵线段树所代表的线段数区间X的
所有前缀异或值的二进制的第i位分别为0和1的个数:bl[X][i][0,1]
以及所有后缀异或值的二进制的第i位分别为0和1的个数:br[X][i][0,1]
当前区间所有数的异或值:B[X],
当前区间内的所有子串的异或值的和:b[X]

假设我们已经得出了2个连续的线段数区间l和r,现在,我们把它们合并成一个大的区间q,很显然:
b[q]=b[l]+b[r]+跨越两个小区间的子串异或和

那 跨越两个小区间的子串异或和 怎么算哪?

很显然,跨越两个小区间的子串异或和= (br[l][i][0]bl[r][i][1]+br[l][i][1]bl[r][i][0])2i
转移bl和br时注意一下即可。

PS:可能需要卡常数

优化:
易证,已知当前区间的元素个数和前(后)缀的0(1)的个数,可以直接算出1(0)的个数,这样可以减小常数

T2.不稳定的传送门

抽象题意:给出概率和花费,求最优花费期望值

这题有一个奇怪的贪心,
设f[i]为终点到当前点的距离
那我们就要求在最优的顺序下(不同的顺序下期望值会不同)到达当前点的最小期望值,

又长又臭,不想打,上连接

T3.宝藏

抽象题意:给出依赖关系,求最小的∑ai/∑bi

先科普下01分数规划
但是这题有一个奇怪的依赖关系,于是

栋爷说得对:这些奇怪的依赖关系的题,很多都是用网络流做

我们知道,之所以要花上这么的力气去开很多门,就是为了打开依赖门,得到更优的方案,

So,依赖点被依赖点连一条边,

一个点,如果它在01分数规划中的值为正数,那么它可以流过的量就为这个值并向S连一条边;如为负数,那么它可以流过的量就为(-这个值)并向T连一条边,
因为如果它的值大于0,那么它对答案有贡献,反之会拖累答案,
然后跑一遍网络流,
因为网络流是跑不出负数的,所以当跑出来的最小割结果为0,那么答案就要往上升,反之就要下降,(自己YY一下就可证明)

T4.地图

抽象题意:给出一个不完整的地图和几个必须联通的块,求合法的方案数

正解为插头DP,一脸懵逼。


DAY 2

T1 染色大战

抽象题意:有两个人互相博弈,求两人的得分差

标准博弈论,加点小优化即可。

T2 QT与泰剧

抽象题意:求S-T中,为3的倍数并每位不全是质数的数有多少

标准数位DP,注意细节即可。

T3 项链

抽象题意:给出个环,求去除一段后的最大对称环的长度

把原串在后面复制一份后搞一下manachar,
因为所谓的对称串就是两个回文的串组成的,但长度一定要小于n(有大神当场用脚趾头想了一个反例)
设:j,i(j< i) 我们现在需要的是求满足(i-j<=n && j+f[j]>=i-f[i])下的j的最小值

我们用线段树维护区间的i+f[i]最大值,这样我们就可以知道此区间是否有值合法,就可以继续往下找

T4 小学生数学题

抽象题意:求 ni=11i 在模 pk 下的答案

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值