其他分享
首页 > 其他分享> > 省选模拟5

省选模拟5

作者:互联网

A:序列

区间取max 区间加, 显然是吉司机线段树

与普通的题不同的地方在于要记录修改次数

这个东西只要每次pushdown的时候求一下最小值是在哪里转移过来的,然后把次数下放就好了

因为吉司机线段树只会区间把最小值改为另外一个值,所以是正确的




B:旅行计划

不是很能想到的构造题,直接给结论和构造

首先要知道扩展裴蜀定理

把一个联通块内所有边权除掉gcd

然后对于一次询问,让k除掉所有边权与它的gcd

此时如果k是奇数,一定可以构造出一组解使得\(mod k = 0\)

假定从u到v路径和为dis

对于u到v的路径,来回走k次是可行的,k次之后到达v的位置

此时走过的总路径为dis*k,mod k一定是0

关于为什么k除掉gcd以后仍然是对的

因为假定此时k为k/g为奇数

一次路径长度为dis, 显然仍然可以走k/g次

此时总路径长度为dis*k/g,因为dis/g是个整数,所以mod k = 0

现在考虑k为偶数的情况

首先一个结论是,一个回路一定可以构造出贡献为2

假设我们此时建出了dfs树,那么树上的每条边都可以走任意偶数次,遇到非树边也可以随便转

所以此时也就是\(2*k_1*dis_1 + 2*k_2*dis_2 + ...\)

这个式子满足一堆dis的gcd与k互质

根据裴蜀定理可以构造出贡献为2的回路

然后发现从u到v路径为偶数一定可以构造出答案为0的路径,因为可以不断走使得 \(2*次数+dis = k\)

另外一种构造出答案为0的路径是存在奇环,因为显然可以到达奇环再回来(奇环指环长度为奇数

这样中间的路径走了两次,奇环路径走了一次,此时贡献为\(len+2*距离\)

而len是个奇数,所以这样就把剩下要走的变成了偶数,又与上一个部分一样了

其它情况就是k与gcd的gcd了




C:Hack

网络流最小割可以保证每条边都被割

但是无法保证每条边只被割一次

把反向边建成INF就可以了

因为对于有环的情况,此时只割掉一个边是存在增广路的,所以就可以了




标签:gcd,省选,路径,构造,此时,奇环,模拟,dis
来源: https://www.cnblogs.com/2004-08-20/p/14300978.html