我是中国 OI 选手。
开头是两套《省选难度》的 UR,明显做不太动,所以后面放了 UER 的一些题。
UR #25
UOJ805 设计草图
找一下合法的判据,首先保证 ?
之后要能够合法需要的条件。
把所有的 ?
变成 (
,令 (
为 )
为
把所有的 ?
变成 )
,令 )
为 (
为
维护一下单调栈,处理出来每个位置左右最多能够够到的地方,然后需要二维数点。
UOJ806 见贤思齐
首先
固定根节点的权值不变或者每天都加一,设第
下面的性质很强,需要手玩才能拿出来,即是如果存在
然后定义
证明是
意思是,父节点权值会在
然后可以用线段树维护
基环树的做法需要一个观察,对于树上最小权值记为
然后学了一下 zky 的做法,感觉吊打 std。
对于
而当过了一段时间之后,
于是写出来应该是
理解一下,取到
或许是技巧,这几天看到了几次了,把里层的变量拎出来,对于这个式子拎出来
此时维护一个
可以倍增优化。
UR #24
UOJ792 比特跳舞
首先几个部分分很好求,不想多说,感觉时间复杂度是单
瞄了一眼最短代码长度为 408b,居然不是巨型数据结构,有点震撼,这个速度莫非是
从部分分入手想一下。
怎么算从
注意一下边界,
如果这个式子的结果是奇数,那么二元组
首先去掉
于是得到现在的做法,我们只关心第一位数字是啥,以及这一位数字在后续的序列中重复出现的位置,重复出现了奇数次后会对答案有贡献。
思考如何快速统计答案,固定起点非常不好做,平凡的想法是转成考察对于当前节点为终点,能造成多大的贡献,记录当前序列中最后一个数字出现次数,那么之前不同奇偶性的位置都能产生贡献,发现这个东西能直接 dfs 一遍解决。
好吧,这个 dfs 可能还是需要写一下具体实现。
UOJ793 比特智慧
全场最高分 5pts,有点震撼。
UOJ794 比特之地
写了 50pts 做法,100pts 需要 link
UER #10
UOJ706 随机薅羊毛
纯推式子?首先把高斯消元的式子写出来,定义
令
答案是
UOJ707 重构元宇宙
有点困难,靠看 vfleaking 博客了。
我什么时候能学会把距离转内积啊啊啊啊啊啊。
首先确定这个
然后用第一个式子减去后面两个式子
然后原问题重新被描述为
于是首先钦定原点,每次加入一个新的点都有
Other
UOJ172 论战捆竹竿
有点难,我边看题解边记录一些东西。
首先每次可以在后面添加一个 border,长度增加
看起来是跑同余最短路。具体过程是将
然后复杂度是
对于任意一个字符串,它的 border 长度一定会构成
个等差数列
可以递归证明,proof。
然后拎出来每一个等差数列,假设首项为
考虑我只有这一个等差数列该怎么去做?观察到会连出来环,一共有
那如何在环上更新呢?首先环的起始位置是不会被更新到的,相邻的点之间的边长一定为
剩下的问题是在不同模数之间切换,假设先前的模数为
复杂度降为