省选模拟4

Posted gkeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了省选模拟4相关的知识,希望对你有一定的参考价值。

好久不写博客了啊(懒啊)(颓啊)(不想动啊)
_(:з」∠)_

(T1:)
容易想到根据包含关系建出一颗树,然后简单DP就行了
考虑怎么建树
首先有个结论
如果一个圆心A被圆B包含,且(r_A < r_B),那么圆A被圆B包含(根据不相交的性质易知)
考虑有r的限制关系,把圆按照r从小到大排序
每次用当前圆去覆盖,把所有覆盖到的圆心向当前圆连边并删去,用KD-tree或二维线段树维护即可

(T2:)
通过打表可以发现(ans(n,k)=lcm_{i=n-k+1}^n(i))
首先不能直接求,因为lcm过大,且过程中不能取模
考虑分解质因数,对于每个质因子的指数取max即可,复杂度(O(n^2))

考虑优化,构造n个数组D,满足(prod_{i=n-k+1}^n D_n[k] = ans(n,k))
发现(D_n)(D_{n+1})的差异不大,于是可以通过(D_n)来构造(D_{n+1})
首先令(D_{n+1}[i]=D_n[i] (i leq n)),(D_{n+1}[n+1]=n+1),显然有问题
考虑对(n+1)分解质因子,设(n+1=p_1^{c_1}*p_2^{c_2}*...p_k^{c_k})
对于任意一个(p_i)将D数组中最靠后的(c_i)(p_i)除去即可,这样构造出的新数组显然满足条件

因为(sum c)(log)级别的,所以每次只会修改(log)个位置,用主席树维护
构造复杂度为(O(nlog^2n))
查询时输出第n颗线段树的(prod_{i=n-k+1}^n D[i])即可
查询复杂度为(O(Qlogn))

(T3:)
250行代码,wsl
表示看不懂题解...所以说说我的做法...

首先可以发现这是个仙人掌,而且还是特殊的仙人掌(仙人球???)
它不仅仅满足每条边只在一个简单环内,它还满足每个点只在一个简单环内!!!
容易想到边双缩点,但发现缩完后就不会做了...

仔细分析题目性质可以发现
1.如果s到t的路径上有一个环,那么这个环上的最小边一定满流!
2.如果s和t在一个环上,那么这个环上的最小边一定满流!
3.如果s和t一个在环上一个在环外,那么这个环上的最小边一定满流!
总之,经过的环上的最小边一定满流!

那么我们就可以将每个环上的最小边的容量加到环的其他边上,将原图转化为一颗树,两点的最大流就是链上的最小值

那还要动态修改边权怎么办呢?
发现如果最小边变化的话,树的形态也会发生改变,链上加的权值也会改变

综上所述,我们需要一个数据结构进行以下操作:
1.维护树的形态
2.查询链上的最小值以及其编号
3.链上加一个值

LCT就行了...

于是最终的代码为:
1.tarjan (30行)
2.LCT (100行)
3.大力分类讨论 (60行)
(4.7KB)
。。。。。。。

ps: 数据锅了啊,第8组数据最后面炸了啊!!!

以上是关于省选模拟4的主要内容,如果未能解决你的问题,请参考以下文章

4.3 省选模拟赛 石子游戏 树上博弈

[2020.6.6多校省选模拟4]最简单题

4.9 省选模拟赛 圆圈游戏 树形dp set优化建图

4.4 省选模拟赛 拉格朗日计数 树状数组+容斥.

4.22 省选模拟赛 三元组 manacher 回文自动机

4.15 省选模拟赛 编码 trie树 前缀和优化建图 2-sat