【5.4 清北笔记】

1

树上每次询问两点间的最大流,支持花费a的费用增加一条流量为1的边,花费b的费用给一条边扩容,最多花费k元。

首先如果加边不必扩容贵,那么肯定只加边
分情况讨论,取max:
1.只加边
2.只扩容
3.先加边然后在这条边上扩容
1、3种情况很好处理,倍增求一下路径最小值就好了
对于第二种情况,我们可以二分流量扩成了多少,那么原来小于这个流量的边都应该被扩容到这个流量
问题变成了查询一条链上小于某个数的和。于是在树上建主席树。
由于主席树本身是一个二分结构,所以直接在主席树上二分就好了。看一下能不能扩容到mid,能就往右走,否则往左走。
复杂度 O(nlogn) O ( n l o g n )

2

树上询问最远同色点的距离,带修改。(bzoj3456)

考虑点分治
带修改点分治怎么做?
发现每次只会修改一颗子树的值。
每颗子树维护黑色最大值堆,白色最大值堆,和的最大值堆

3

n个点无向联通简单图个数
hi h i 表示n个点构成的所有图的数量
fi f i 表示n个点构成的连通图的数量
gi g i 表示n个点构成的不连通图的数量
显然, fi=higi , hi=2n(n1)/2 f i = h i − g i   ,   h i = 2 n ∗ ( n − 1 ) / 2
考虑如何求 gi g i
假设我们固定一个点,枚举这个点所在的联通块大小,可得:

gn=i=1n1fi(n1i1)hni g n = ∑ i = 1 n − 1 f i ∗ ( n − 1 i − 1 ) ∗ h n − i

把组合数展开,合并一下:

gn=i=1n1fi(n1i1)hni=i=1n1fi(n1)!(i1)!(ni)!hni=(n1)! i=1n1fi(i1)!hni(ni)! g n = ∑ i = 1 n − 1 f i ∗ ( n − 1 i − 1 ) ∗ h n − i = ∑ i = 1 n − 1 f i ∗ ( n − 1 ) ! ( i − 1 ) ! ( n − i ) ! ∗ h n − i = ( n − 1 ) !   ∑ i = 1 n − 1 f i ( i − 1 ) ! ∗ h n − i ( n − i ) !

fi f i
一个叫做分治fft的神奇的东西。
fi f i 乘上 hj h j 会对 fi+j f i + j 产生贡献。
看起来像是一个卷积的形式。
考虑cdq分治,先计算左边,再计算左边堆右边的贡献。合并的时候用fft。
一道裸分治fft:hdu 5730

4

n个点m条边的无向图,询问保留编号在[l,r]的边的时候图中联通快的个数。

一开始的思路是按照询问区间的右端点排序,然后类似莫队的方法,r右移的时候一条一条往里加边,维护连通性。
问题是l左移时不能只删除掉这些边,因为删掉以后后面可能还有边会加进来。
考虑从右往左加边。
这样从左向右删边的时候,如果是一条树边 那么删掉以后联通块数量一定加一,因为他后面没有可以替代他的边了。
但是这样就处理不了第三个区间了。
可以发现我们要做的其实是选择尽量靠右的边做一颗生成树。
所以从左到右加边,如果有环,找到环上编号最小的边,删去。
如果要加进a要先删掉b,连边a->b。
用lct维护这个过程。
联通块个数等价于总点数-树边数量(因为每一条树边相当于合并两个联通块)。
区间内树边数量等于区间内箭头指向左端点左侧的边的数量。
上主席树。

5

点修改 换根 改链 询问子树最大值
(不基于dfs序)
询问子树最大值
就是它所有儿子的最大值取max和自己取max
维护一个堆
1.重儿子
2.轻儿子

对于2.维护一个堆,存它所有沿着轻边向下走的子树在最大值

对于1, 查询他的重儿子 递归往下做

修改一条路径 最多经过log条轻边,更改一下
2353

先手必胜当且仅当变数为偶数
一条边xy可以删除当且仅当xy度数奇偶性相同
也就是说xy项链的原来能删的边变得不能删了
不能删的边变得能删了
推一波狮子
假设总共有k条边能k-a-b
k-1-a-a+(d_p1-a-1)+(d_p2-b-1)
原来有奇数条边现在有偶数条边
所以有奇数条可删除的边必胜
任何一条不可删除的边一定链接一个基点和一个偶数点
一张图的度数和为偶数
所以一定有偶数个度数为奇数的点
折半搜索 fft

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值