CF1699D题解
考虑 \(dp\),设 \(f_i\) 表示考虑前 \(i\) 个数,且留在最后的数是 \(a_i\) 的最长长度。
转移就考虑枚举上一个位置 \(j\),满足 \(a_j=a_i\) 且 \([j+1,i-1]\) 这个区间的数,能被抵消,于是现在的问题就变成如何判断一个区间的数能否消完,类似摩尔投票的结论,能被消完当且仅当区间长度是偶数且区间内没有 \(1\) 个数的出现次数大于区间长度的一半。
于是预处理所有区间是否可行,具体实现是枚举右端点,然后左端点从左往右移动的过程中维护众数。
浙公网安备 33010602011771号