博客食用更佳~
https://www.cnblogs.com/czyty114/p/15060602.html
A
$\;$
把每种字母所在的区间求出来,对于每一个$i$,看$c_i$是否在其应属的区间,若不在,则答案+1
B
$\;$
只有我这个sb卡在B了罢。。。。
只有一个胜利者是显然的。
但是如果要判断一个人是否是胜利者需要$O(n)$的时间,我们不可能对于每个人都比较一遍。
这里运用到一个思想是排除法(不去找符合条件的人是谁,先把肯定不符合条件的人pass掉)
从前往后扫,如果发现$i$被此时待定胜利者$w$打败了,说明其不可能是胜利者(直接踢掉,不用管他了)
否则说明$w$肯定也不是。
所以要么我们保留$w$,要么把一个前缀的人都踢掉了,后面继续排除。
这样只会剩下一个人,再和所有人比较就行了。
C
$\;$
手玩一下发现,新加的弦不可能存在其中两根,使得这两根不相交。
将其交换一下,只会使答案更优
直接贪心就好了
D
$\;$
满足其中$n-1$个人是很容易的。
把满足条件的两个位置连一条边,那么如果要出现$n$条边,其中肯定会出现环。
也就是存在两个集合$A,B$,使得$A$中数的绝对值之和等于$B$
那么$2^{2n}\times n$判断一下就好了
E
$\;$
构造好题。
对于一种颜色$c$,设其出现的位置为$d_{c,1},d_{c,2},…,d_{c,k}$
显然我们只会选相邻的两个位置作为最终答案的一个区间。
观察条件:$\lceil \frac{n}{k-1} \rceil$这个东西很奇怪。
发现$k-1$其实就是每种颜色空隙的数量
有两种想法:
把$n$个区间分成$k-1$组,每组最多有$\lceil \frac{n}{k-1} \rceil$个区间,让每个位置最多属于一组
或
把$n$个区间分成$\lceil \frac{n}{k-1} \rceil$组,每组最多有个$k-1$区间,让每个位置在每组中至多出现一次
发现第二种思路比较难搞,得在每个区间都得满足至多出现一次的条件。
考虑第一种怎么做
简化后:让组之间没有交集
按照空隙分组:
先按$d_{c,2}$从小到大排序,然后选前几个为一组,这样相当于以第一个空隙为一组
接着对剩余的颜色按$d_{c,3}$从小到大排序,再选前几个为一组,以此类推
成功完成了分组
F
$\;$
最关键的一点就是,蚂蚁走过一个传送门时,前面的传送门(包括这一个),一定都是开着的
这个归纳一下差不多就可以了
然后维护$k_i$表示从第一次走到传送门$i$,到走过去用了多长时间。
求$k_i$时,只需要$upper \; bound$一下,再维护一个前缀和即可