爆零了嘻嘻嘻
赛场上一点思路没有纯罚座
T1构造,因为k下界是log,所以想到倍增构造,考虑把它构成一颗树的形式,发现因为相当于是像做了一个差分,所以可以到达与其奇偶性相同的点
当n为奇数时,根据步长和子环定理,可以互相到达
当n为偶数时,考虑构造一种可以改变奇偶的方法,发现4312是可以的,然后这样%4==0就做完了
当%4==2时,考虑用2的代价做改变奇偶,将最后两个带上,观察样例,321和321可以改变,那就用321321和321321改变最后6位,剩下的因为只剩下log-1次了,所以直接从2开始倍增
T2有一个性质,就是用最大的a_n一定能取道cmax,考虑a_n的最高位,直接考虑一下就完了
然后剩下的就是计数问题了,考虑用k的复杂度处理出f,然后枚举g,可以拿下50分,后面忘了
T3前面忘了,中间忘了,后面忘了
T4,很喜欢的一道题,不过没时间码了,找时间一定给码出来
考虑部分分
链开一颗线段树,二分找贡献,维护1~n上的也是一样,找到外面点对链上的贡献
如果没有删除,并查集或启发式合并做一下,这里具体还不会
正解的话
树链剖分,然后在每一条链上用一个虚拟点来存一下关键点对这个链的贡献(注意只对链内有效)
更新一个关键点,就暴力向上跳链,建立虚拟点,来维护下面的关键点对上面的贡献
考虑查询时,现在有了下面的点对上面的贡献,上面对下面的呢,或者别的子树下面的对这上面的呢
别的子树对下面的,会先跳到和这个点的lca上,所以在向上跳的链上就会有虚拟点建立
所以就暴力跳上面的链,然后考虑怎么统计上面的贡献,贡献为 \(k-|dis_u-dis_v|\) 然后考虑拆掉绝对值,分讨,分别在线段树上维护即可
细节颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇颇多