面向样例编程的一场比赛
A.水题
B.水题
C.其实也是水题但是啥也不写也不太好
题意可以转化成有多少个子串不存在长度大于等于3的递增或递减序列。看起来挺唬人其实玩几组数据发现其实子串长度不可能超过4,否则必存在长度大于等于3的递增或递减序列。这样直接暴力对每个位置求即可。
D.巧妙的数数题,应该是我数数水平不行数了一个半小时
题意:
英文题就得看原生态题面
题解:将式子转化为$a_i-i=-(a_j-j)$。考虑$F(a)$怎么求,当$a_i-i$的绝对值均相等且正负数量最接近时$F(a)$最大,于是对于长度为奇数的序列$F(a)=(n/2)*(n/2+1)$,对于长度为偶数的序列$F(a)=(n/2)*(n/2)$。再考虑对$a_i-i$的取值来计算答案。随着$a_i-i$的绝对值增大,左边只能取正,右边只能取负,随着$a_i-i$的变化移动双指针统计答案即可。
E.
题意:给定一个序列,每个位置是前$k$个字母之一或者?,设$s_k$表示全部为第$k$个字母的最长子串,要求将序列补齐,最大化所有$s_k$最小值
题解:最小值最大考虑二分,然后状压$dp$来检测即可