GDKOI2016

第二次正式比赛(第一次是NOiP)
Day0
写作业
看电视

Day1
好的,比赛一开始,我旁边的同学看完第一题就马上开始打了。但是我看到第一题的时候,先是看出了那个是一个线段树 可是我并没有去打第一题。因为我发现第三题更水。
比赛时,我的第三题代码是这样的:
begin
    拓扑出度排序  
    然后我判断哪一些可以被解锁,那我就选那些之中的min(财富/伤害)
    可是,一比完赛之后DH说我做错了我才发现我真的做错了:

    (如果你要进入某个房间,你在进入那个房间之前要在i号那里拿到钥匙,那么你要进入i号房间,拿到它的(财富/伤害),你才能去拿你想拿的那个房间的(财富/伤害)
end.
于是第三题宝林;
后来又听说水神只要把一开始不用钥匙就可以进入的地方min 一下,这样就可以拿到40分了,接着,你在把除了那种情况之外的情况输出那个奇怪的字符串就又可以获得10分了

这一道题目的正解是:先拓扑排序一次判断那些点是有用的,然后按照分数规划的模型二分答案t,设两个权值分别是a和b,那么每个点有新权值at−b,对这个新图建一个最大权闭合图就可以了。因为是网络流所以复杂度比较玄学(这个其实是我复制的)

第四题,十分不解为什么宝林
我是直接枚举每一个格的状态,不知道为什么没水到 一个点 
正解:无脑插头DP,状态存联通块的最小表示法,直接枚举每个位置填什么然后直接转移即可。(抄自网上)

我开始敲第一题的时候,只剩下30分钟了
线段树是根本不可能的了,于是我开始打水法,可是,我不知道怎么弄 xor  于是我就GG 了
正解:先做一个序列的异或前缀和Si=Ai⊕Si−1,于是查询就变成了询问[l,r]内的∑i<jSj⊕Si。注意到元素的大小只有1000,也就是不超过10个二进制位,这样我们可以维护每个位在区间内的个数,开10棵线段树,每次查询就是查询区间内0和1的个数然后乘一下,修改Ap=x的话就看新元素和旧元素每个位上有没有变化,如果有就对对应位的线段树上的[p+1,n]区间将0和1的个数交换一下即可。时间复杂度O(n+10mlogn)。 

第二题,这个传送门
正解:设fi表示第i个点到终点的最小期望代价。假设现在已经选了一些门并按照最优顺序走了,然后要判断走下一个门是否可以更优。设下一个门能够走到j这个点,花费和期望分别是w,p,如果更优,就有fi>p(fj+w)+(1−p)(fi+w),化简一下可以得到w/p+fj<fi。于是我们就可愉快地按照w/p+fi排序然后贪心直到不能扩展为止,并继续往前计算f。时间复杂度O(nlogn)。!
Day2
早上很晚才起来。
可是,我今天的分数比昨天要高哦(不高才怪)。
好的,比赛一开始,我旁边的同学看完第一题就马上开始打了。

于是我开始敲看似简单的第二题。
首先,我打了一个高精度加,发现不够,打了一个高精度减,再打了一个高精度乘,(为什么没有打高精度取模)
然后我以370行的程序结束了我的高精度(我没有看到要mod 10007啊啊啊)
这题的正解是:数位DP,设f[i][j][k]表示第i位取j这个数且模3余k的不合法数的个数,设g[i][j][k]表示第i位取j且模3余k的数的个数,利用这两个方程直接计算即可。 

接着我又 开始打第三题
这一题让我敲了一个钟,调试调了很久 可是很奇怪的事情是0分

这一题的正解是: 将原串复制一次接到后面之后,做一次manacher,设原串长度为n,实际上就是要求两个点i,j,|i−j|≤n使得以这两个点为中心的回文串相邻并且长度和最大。这个一个log爱怎么搞怎么搞。(过一会补接近线性的做法)。 
第四题:太难了,网上的题解太长,我不想复制了
 
这一次出去比赛,让我发现了除了纪中之外在广东省也有很多高手。还有一个问题是我想知道,为什么纪中的高中的神犇都不讲前三题
我也觉得自己还是比较差,要努力学习,好好加油,拿好自己可以拿到的每一分 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值