题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)

我以为我是edu场没切A的唯一一人,赛后翻榜发现我不孤单……

\(A\)

我不会啊,有没有神仙教教我

\(B\)

每个\(1\)\(0\)都会相互抵消,因为总有\(01\)交界处(只有其中一种字符就没有)。于是统计\(0,1\)的个数,答案就是\(\min(cnt0,cnt1)\)的奇偶性,奇数则Alice赢,偶数则bob赢。

\(C\)

按照题意模拟即可,唯一的改变就是不用每次枚举init,简单来说就是前缀和\(S_i=S_{i-1}+(s_i=='-'?-1:1),S_i \lt 0\)\(ans+=i+1,S_i=0\),最后答案记得\(+n\),因为最后一次\(res+=n\)

\(D\)

这是我全场切的最快的题(

考虑reverse一个区间的本质是这个区间的偶数和换成奇数和,于是只要把每个奇数位置减去左边的偶数做一次最大子段和,再减去右边的偶数做一次最大子段和,两者取\(\max\)加上原来数组偶数位置上的数的总和即可。

\(E\)

考虑枚举末尾是几,因为\(0 \leq k \leq 9\),所以每次最多只会改变末尾两个数字。然后把末尾两位数字的和统计一下,再往前面填充,尽量满足位数小那就多填充9,最开头的就是对9取模剩下的。然后把每次的答案取最小值就行了。

\(F\)

考虑A的总人数如果比B还多肯定不合法,然后每个B只能满足它相邻的两个的A的需求,所以我们可以每次让这个A左边的B尽量满足它,然后右边的B把不满足它的补上,这样依次做下去,有一个补不上了那就不能满足,否则可以满足。

\(G\)

发现对于每一个\((x,y)\),都存在一个格子\((a,b)\),使得\((x,y)\)可以到达\((a,b),(a,b+1),\cdots,(a,n)\)却而不能到达\((a,b-1)\),很显然这个\(b=|a-x|+y\)。然后我们假设把每个\(x\)集中移到固定的一列,那么对于每一行它上面的棋子肯定\(\leq\)这行上面的总行数,也就是\(f(i) \leq r-i\)

然后我们假设把一个棋子一直往右下移集中在固定的一列,然后移到同一个位置的棋子一共\(a_i\)个,肯定占据了这一列的连续\(a_i\)个位置,如果这一列摆不下了就往旁边的一列移。那么维护一下摆放的前缀和再移动就可以了。直接线段树。

posted @ 2020-06-26 01:13  kylin_xy  阅读(165)  评论(0编辑  收藏  举报