题解 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\)个位置,如果这一列摆不下了就往旁边的一列移。那么维护一下摆放的前缀和再移动就可以了。直接线段树。