AtCoder Grand Contest 007

AGC的题目真的很不错。拿来锻炼一下自己的思维水平。

A Shik and Stone

记录一下每一行最右边走到了哪里

下一行的最左边必须与上一行的最右边相连,且除了这一段连续的之外,不能再有别的路径


B Construct Sequences

构造,使(a_i=n imes i-n+1),而把(a_i)反向填在(b_i)中,这样,初始的时候(a_i+b_i)均相等

对于不同的排名,只需要对(b_i)加上(rank_i-1)就可以使得,他比他排名小的大


C Pushing Balls


D Shik and Game

这道题目和中秋一起训练的一套日本区预赛题的Black And White有些相像

显然,拿取coin一定是一段一段进行的

在一整段中,你会一次性走到最后,是他们开始产生coin,然后走回去,从这一段第一个开始拿

我们用(f[i])表示拿到第(i)个位置所需要的最少时间,则(f[i]=f[j]+a[i]-a[j]+max{T,(a[i]-a[j+1] imes 2)})

(max)的地方比较难处理,我们把他单独拿出来,用一个单调递增的队列维护,使得队首元素(a[i]-a[j+1]leq T)

那么队列中的元素计算方式为(f[j]+a[i]-a[j]+T),而队列外的元素计算方式是(f[j]+3 imes a[i]-a[j]-2 imes a[j+1])

维护的时间复杂度(O(n))

原文地址:https://www.cnblogs.com/xiejiadong/p/9715177.html