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