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))