AtCoder Grand Contest 007

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

A Shik and Stone

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

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


B Construct Sequences

构造,使\(a_i=n\times 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]\times 2)}\)

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

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

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

转载于:https://www.cnblogs.com/xiejiadong/p/9715177.html

你可能感兴趣的:(AtCoder Grand Contest 007)