2016.08.12【初中部 NOIP提高组 】模拟赛C

来源:互联网 发布:入驻阿里云大厦的条件 编辑:程序博客网 时间:2024/05/20 20:44

T1:

简单模拟.


只需建一个队列,头指针(head)指向1,尾指针(tail)指向k,每次头指针作为删除的数,然后把头指针以后的P个数放到队尾,并更新尾指针,以此类推,每次当是第n的倍数次删除时就记录一下,最后输出就行了.


T2:

DP.


因为这里只有n个格子,且仅有走和不走两种选择,很容易就可以想到设f[i,j]表示到第i个格子,走了j次的最优值.


也很容易推出状态转移方程——

当走第j次时不是t的倍数则状态转移如下:

f[i,j]:=max{f[i-1,j]-s[i],f[i-1,j-1]+s[i]}

当为倍数时则如下:

f[i,j]:=max{f[i-1,j]-s[i],f[i-1,j-1]+s[i]+b[i]}


边界就自己推推吧...


T3:

对于第一问很明显用二分.

第二问则可直接发现答案呈斐波那契状...再加高精度即可...


T4:

赤裸裸的并查集...


把边按照权值从小到大排好序之后,先是枚举从哪条边开始往下建图,再枚举现在建图用到了哪条边,则对于当前枚举到的边,判断其最老父亲是否相同,不同的话则把他们相连,再加上路径压缩,当连上第j条边时判断s到t是否能通,能通的话则直接判断答案是否需要更新,并直接Break...



总结:

这次第一、三题都在考场AC了,而第二题却因看题失误导致没有做出DP(我以为跳的次数必须得连续..)...真的太悲了,如果看懂题目,这道题就是一道很简单的DP......而第四题因为之前没学过并查集,所以没做出应该情有可原,而第二题这种看题失误以后一定不会再犯!

1 0
原创粉丝点击