省选模拟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并构造方案即可
……

posted @ 2020-01-19 16:44  G_keng  阅读(139)  评论(0编辑  收藏  举报