省选模拟6

(T1:)
对于每个点颓出一轮的贡献和权值的变化,等比数列求和即可
观察颓出的式子可以发现答案等价于改变初值后只算一轮的答案

然后问题变为如何计算一轮的答案
看到1e5,想到(log^2n)(sqrt n)
因为是图所以应该不是(log^2)
于是想到按度数与(sqrt n)的大小分成两类
度数小的暴力枚举影响,度数大的暴力枚举贡献

(T2:)
看到字符串,想到后缀自动机(???)
考虑在首尾加字符等价于沿着parent树向下跳和在自动机上走
因为有实际意义(添加字符),所以一定是个DAG
拓扑排序就好了(注意两种走法的贡献不同)

(T3:)
神犇大模拟(@^%#&^@%#^@)

首先考虑LIS与LDS交集最大为1
对于每个位置i统计有多少个LDS经过,记为(f_i)
再将LDS的总数记为(all)
那么一个LIS ((j_1,j_2...j_k)) 不合法当且仅当(sum_{x=1}^k f_{j_x} = all)

所以,我们可以首先根据类似拦截导弹的方法算出(f)数组
然后跑LIS,并同时对于每个转移点维护两个(sum f)不同的转移方案
(因为两个(sum f)不同,所以一定存在一个不等于(all)的方案)
最后对于每一个LIS的合法结束点看是否有不等于(all)的方案
如果有的话,再根据转移时记录的信息构造出方案

最后将LIS使用过的位置删去,再求一遍LDS并构造方案即可
……

原文地址:https://www.cnblogs.com/Gkeng/p/12214569.html