把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

POI2015

KUR

首先设z=ai+b,考虑求出z的范围。假设序列的第j位为1,则z+a(j1)p,即将[p,n)区间向左循环位移a(j1),然后对所有这样的区间取交。

由于循环位移可能一个区间变成两个,因此直接取交不好做。考虑取反变成取并,然后排序即可。

但是你会发现样例过不去,观察一下发现最后m1个即使合法也无法造成贡献,则暴力KMP即可。时间复杂度O(mlogm)

submission

TRZ

牛逼题,本来还口胡了一个O(nlogn)的诡异做法。

结论大概是左端点在前三个,或右端点在后三个。

考虑反证,也即证明左右都有三个不合法。设三个大小递减的字母依次为A,B,C

首先证明不能有A,第一个位置显然不能,第二个位置如果是A,则第一个位置只能是C,考虑另外一边的第一个位置,如果是B则全部加一,矛盾。如果是CC填了A的位置,矛盾。

第三个位置如果是A,则前两个不能都是B,而若BC均有也矛盾,若都为CC填了A的位置。

因此不能有A。然后类似讨论也可以证明只有BC不合法,因此得证。

submission

MOD

首先维护树上最远点对,求出f1,i表示一个点子树内最远点对,f2,i表示一个点子树外最远点对。

然后最远的显然是选一条边断掉然后把两个直径接起来,最近的是一条边断掉然后两个直径中点接起来。

用树剖不要用欧拉序,会被卡空间。

submission

POD

和PKUSC2022D2T2差不多,对每种颜色随机哈希值,满足异或和为0,则颜色在同一边可以看作异或和为0,概率是264。然后第二问双指针即可。

submission

KWA

是那种需要打打表才能知道的题捏。

首先显然n(n+1)(2n+1)6处的答案为n,且是最后一个。打表发现最前面的n+1答案在n足够大时在n(n+1)(2n+1)6128处,足够大指n2>128量级。

然后考察[n(n+1)(2n+1)6128,n(n+1)(2n+1)6]内的所有k(n),我们发现恰好和[1,128]内能否被组成出来相同。也即如果j不能被组成出来,则n(n+1)(2n+1)6jn+1,否则为n

这启发我们去证明,n(n+1)(2n+1)6j是由1n2减去某些128以内的平方数得到的。

考虑归纳。已知n2870内打表证明正确,往后的n>400,则上述范围只能由前面的128范围内加上n2得到,也就可以得到这个循环。

则找个循环节就很好做了,时间复杂度O(logn)但是我懒写了O(n3)

submission

WYC

拆点,倍增,矩阵乘法。没了。

submission

LAS

首先有一个观察,如果有2Ai<Ai+1,则i一定会选择i+1,不论i+1是否选择i+1,对于Ai>2Ai+1同理。

则先把这样的人方向定出来,注意到可能有某个人选了以后他相邻的人也会定出方向,则需要BFS。

然后对于剩下的人,选最大的一定是合法的。因为不存在别人选了还能选的情况,所以不论他前面的人选了没有,他选最大的肯定不会反悔。

时间复杂度O(n)

submission

CZA

首先这个问题可以转化成从小到大加入数,维护数形成的联通块的信息。

首先考虑k=0的情况,可以发现如果一个联通块的端点不为[ip,i1]范围内的数,那么这个端点就接不上去了,因此联通块的两端点必须都在[ip,i1]范围内。

再考虑加上这些限制,我们无非需要知道这些端点哪个是什么,则可以将这些也加入信息中。

对于p3的状态,这个信息不会很多,讨论以后总共15种,可以见下图。

image

然后写个dp转移就好了。时间复杂度O(npoly(p))

submission

posted @   275307894a  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2021-01-15 luogu P6623 [省选联考 2020 A 卷] 树
2021-01-15 CF1472D Even-Odd Game
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示