codeforces div 3 contest 894 solutions
IOI失利day1了,打div 3休息一下吧
https://codeforces.com/contest/1862/
A. Gift Carpet
贪心寻找第一个v, 其他的找最早的i,k,a就好了。 应该不需要多说(?)
B.Sequence Game
就是想想看当我们有4 3的时候应该怎么做? 就放一个3在他们中间就对了。
所以就是每个a[i]<a[i-1]的时候就多push_back 一个a[i]
C. Flower City Fence
没什么的呀,就整个东西倒反过来的话我们可以想象[0,h[i]]的区域会+1
那么就做前缀和,然后比较是不是一样就可以了。
D. Ice Cream Ball
题目就是要寻找 max k满足: k(k-1)/2<=n,
答案就是n-k(k-1)/2+k
但是呢如果1个1个加的话, 复杂度为O(sqrt(n)),过不了
那么解个方程就好了。 复杂度 O(1)
E. Kolya and Movie Theatre
非常明显的就是类似于求max k 和的题目。
就是如果说现在要拿i的时候, ans= max( a[x]+ a[y]+...+a[k]-k*d )
所以直接上multiset 维护max m-1个值,注意负值不需要加入multiset
F. Magic Will Save The World
一眼就看出你可以等到f,w够了再出发。
那么我们就可以看到唯一需要找到的就是我们需要多少个f的巫术。那么我们可以看到dp
dp[i][j]=当我们已经考虑了 i 列,和为 j 的时候,此状态是否可以到达
dp[i][j] |= dp[i-1][j-a[i]]
dp[i][j] |= dp[i-1][j]
基础状态为: dp[0][0]=true
那么就可以找到答案啦,看到n可以到的每个状态s,
另S=sum(a[]), g=ceil(s/f) ,r=ceil((S-s)/w)
ans=min(ans,max(r,g))
可能会mle? 所以使用bitset可以加速, 或是翻滚dp也行 (我用了bitset加速,在极端的样例下93 ms)
G. The Great Equalizer
可以看到的是每次走完相邻的差就减一了, 那么答案就是max s[i] + max abs diff
利用multiset解决就可以了(好麻烦的)
给个评价吧(?):
a,b,c 就还行(
d说实话感觉挺傻的(?),不是说那个问题不好还是作者写的不好什么的,感觉看到 ans= n-k*(k-1)/2+k 就已经
满不错了的? 如果是我写题目的话应该会给O(sqrt(n))过?
e,f 好简单(?) 可能看过类似的吧? (a,b,c,d 各个第一次的submission都没过, ef一次就过了?)
g有点恶心,要把答案看出来不简单。代码难度蛮高的。
IOI 2023 day 1失利了, 看 d2吧!