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......而第四题因为之前没学过并查集,所以没做出应该情有可原,而第二题这种看题失误以后一定不会再犯!