1001
定位:中等题 LCT和树链剖分都可以做,简单起见就说说树链剖分,LCT类似。
首先注意到一条路径上是log n条重链和log n条轻边。
当我们给一个点的所有边上的邻居边打标记时,如果该点在重链上,会影响他的轻孩子们。(要特殊考虑链头和链尾之类的)。
那么我们可以给重链上的点打标记,表示这个点的轻孩子们被翻转了没。
那么一个轻边就可以直接询问出来。复杂度:O(n log2 n)。
1002
定位:中等题
首先二分答案,并且注意到一个点开始的子串越长字典序越大。
那么现在问题变成了给你一个环,每个点i能往后延伸长度ri,问存不存在一个 从某点跳k次绕一圈跳回自己的路径。
首先递归删掉ri = 0的点,因为这些点不能经过。那么现在所有点的r都>0,那么如果还有n个点,那么最多跳n次。注意到可行次数显然是一个区间,那么只要求出最小跳的次数就行了。
最小跳的次数就是枚举一个开始点然后不停往后狂跳。
ADD
n ≤ 10w的话怎么做?
1003
定位:简单题
考虑dpi,j 表示S的前i个和T 的前j个的LCT。 注意到,如果我们枚举了一个长度为i的串,我们关心哪些信息?有意义的只有dpi,∗的值!对于i,我们暴力记录所有dpi,∗的值来。
注意到dpi,j 和dpi,j−1最多差1,因此状态数量很少。
1004
定位:简单题
不妨枚举a,b作为直径,然后计算该情况的概率。注意到如果不考虑字典序这其实等价于其它选的点满足Dc→a ≤ Da→b 并且 Dc→b ≤ Da→b。
考虑字典序也类似。
1005
定位:送分题
大家肯定会做吧。
1006
定位:中等题
1007
定位:中等题
首先我们不妨枚举所有点的距离标号,> k的就看成k + 1就可以了。 然后考虑一个距离标号为b的点。
对于一个标号为a的点,如果a < b,那么a到b的边要≥ b − a,并且需要存在一个点使得那条边是b − a。
这个可以用dp来计算方案数。 当然这样复杂度还是不够,注意到其实没必要枚举点的具体标号,只要分别枚举每种标号的点有几个就可以了。
ADD
有多项式算法吗?
1008
定位: 简单题 如果知道了该点离a,b中的a近一点,这实际上意味着确定了一个半平面,左侧是该点可能的区域。
我们不妨枚举离该点第二近的是哪个,再枚举第一近的是哪个,然后平面切割出这种情况下的多边形。
然后进行简单的积分就能计算出答案了。
ADD
第k远当然也是可做的。
1009
四边形不等式优化存在一定问题,暂时没有解法
1010
定位:送分题
和C类似,直接存到目前为止,哪些数可以被拼出来。
ADD
有更好的做法吗?