坏消息:EF 十分困难,我完全不会做。
好消息:EF 过于困难,别人也不会做。
这下知道哪道题更难了吧。
A
Difficulty:3- / Easy
Tag:-
显然,只有两种可能:
* ...ab...ab...,满足存在至少两个 AiA_iAi 满足 Ai≥2A_i\ge 2Ai ≥2。
* ...aaa...,满足存在 AiA_iAi 满足 Ai≥3A_i\ge 3Ai ≥3。
判断一下即可。
时间复杂度:O(tnlogn)O(tn\log n)O(tnlogn)。
B
Difficulty:3.7 / Easy
Tag:-
是不是我想复杂了,但感觉确实难吧。
首先根据题意,第三个区间只需要非空就行,删掉最后一个数就成可空了,不管它。
显然第一个区间只有 O(n)O(n)O(n) 种情况。我们可以枚举所有第一个区间的情况。
现在假设第一个区间已经确定好了,应当如何求出第二个区间是否存在。
也就是说要看第一个区间右端点后一个数为左端点,是否存在一个右端点满足区间内 333 的数量不超过一半。
令 Bi={1Ai≠3−1Ai=3B_i=\begin{cases}1 & A_i\not= 3\\ -1 & A_i=3\end{cases}Bi ={1−1 Ai =3Ai =3 ,显然满足 ∑i=lrBi=∑i=1rBi−∑i=1lBi≥0\sum_{i=l}^rB_i=\sum_{i=1}^r B_i-\sum_{i=1}^l B_i\ge 0∑i=lr Bi =∑i=1r Bi −∑i=1l Bi ≥0 才合法。定义 Ci=maxj=in∑k=1jBjC_i=\max_{j=i}^n\sum_{k=1}^j B_jCi =maxj=in ∑k=1j Bj ,则只需要判断
Ci+1−∑j=1iBi≥0C_{i+1}-\sum_{j=1}^i B_i\ge 0Ci+1 −∑j=1i Bi ≥0 即可。
时间复杂度:O(∑n)O(\sum n)O(∑n)。
C
Difficulty:3- / Easy
Tag:-
这和 B 真的是一个难度的吗。
用桶记录每一个颜色段的长度。
然后会发现操作就是把所有颜色段长度整体 +1+1+1 或 −1-1−1,到 000 了删除这个颜色。
所以只会保留最长的几个颜色段,而且它们之间的差一定不变。
枚举会保留哪些颜色段,直接判断即可。
时间复杂度:O(∑nlogn)O(\sum n\log n)O(∑nlogn)。
D
Difficulty:3.3 / Easy
Tag:-
显然可以转化成任意子段合并。
假设 [l,r][l,r][l,r] 合并。然后我们看向前缀和。
发现前缀和删掉了 [l,r−1][l,r-1][l,r−1] 的部分,其它不变。
而最后的两个的前缀和相等。
所以原问题就转化成了前缀和的 LCS。
时间复杂度:O(∑nm)O(\sum nm)O(∑nm)。