BZOJ5123 线段树的匹配(树形dp)】的更多相关文章

题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根节点的最大匹配&方案数,$g[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配不选择根节点的最大匹配&方案数.那么这是一个很普通的树形dp. 注意到区间长度相等的线段树的结果是一样的,且每层至多有两种区间长度不同的区间(参考 这题 ),因此直接以区间长度为状态进行记忆化搜索即可. 这…
线段树的任意一棵子树都相当于节点数与该子树相同的线段树.于是假装在树形dp即可,记忆化搜索实现,有效状态数是logn级别的. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<map> using namespace std; #define…
题目描述 输入 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案,每行三个正整数Ai,Bi,Vi分别表示道路(Ai,Bi),其价值为Vi 其中城市由1..N进行标号 输出 输出最大平均估值,保留三位小数 样例输入 4 2 3 1 2 1 1 3 2 1 4 3 样例输出 2.500 提示 N<=100000,1<=L<=U<=N-1,Vi<=1000000 这题算…
传送门 在最优的情况下,序列\(s_1,s_2,...,s_k\)中,\(s_i (i \in [2 , k])\)一定会是\(s_{i-1}\)的一个\(border\),即\(s_i\)同时是\(s_{i-1}\)的前缀和后缀,否则一定可以通过减去\(s_{i-1}\)的一个前缀和后缀使得满足条件. 对原串建立\(SAM\),因为有互为后缀的条件,所以\(s_1,s_2,...,s_k\)会对应\(parent\)树一条链上的若干状态. 发现可以在\(parent\)树上DP.设\(f_i\…
http://www.lydsy.com/JudgeOnline/upload/201712/prob12.pdf dp[len][0/1] 表示节点表示区间长度为len,节点选/不选的 最大匹配 sum[len][0/1] 表示对应dp[len][0/1]的方案数 这里选节点即选节点与其父节点的边 设区间长度为len,左子区间长度为L,右子区间长度为R 这个节点选,那么左右子节点都不能选 dp[len][1]=1+dp[L][0]+dp[R][0] sum[len][1]=sum[L][0]*…
D. Slalom time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output Little girl Masha likes winter sports, today she's planning to take part in slalom skiing. The track is represented as a grid comp…
不知道为什么要把这两个没什么关系的算法放到一起写...可能是都很黑科技? 1.线段树分治 例题:bzoj4026 二分图 给你一个图,资瓷加一条边,删一条边,询问当前图是不是二分图 如果用 LCT 的话我们要维护关于删除时间的最大生成树,然后每进来一条边判断奇环,就很难写 线段树分治可以很好的解决这种有插入有删除单点询问的问题 如果没有加入边和删除边的操作,显然我们可以用带权并查集判断奇环解决 然后我们就要考虑怎么把带加入和带删除的问题转换成没有加入和删除的问题 我们记一下每条边存在的时间区间,…
[HDU4867]Xor (线段树分治+类数位dp) 提供一种\((m+n) log a log m\)带有常数约\(\frac{1}{log n}\)的算法 处理询问,将后来加入的数算进序列中,则每个数\(a_i\)都有一段出现的区间\([L,R]\) 离线询问后,我们考虑用线段树分治将这些数加入到询问区间上 由于最多只有5000个修改操作,事实上这些数在线段树上覆盖的区间最多只有\(10000logm\)个,并且有着极其不满的常数(因为每个位置上的数都由多段区间组合而来,总长为\(m\),或…
1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP 题意 用摄像机观察动物,有两个摄像机,一个可以放在奇数天,一个可以放在偶数天.摄像机在同一天可以同时照到k个区域放下去可以持续两天.现在给出每一天每个区域的动物数量,问最多照到动物多少个.如果两个照相机同时照到一个动物只算一次.n<=50 k<=m<=2e4 思路 我们可以考虑只在一天的情况 那么就是一个简单的dp,状态为dp[i][j]第i天放置在区域j可以获得的最大数.那…
题意: 线段树是这样一种数据结构:根节点表示区间 [1, n]:对于任意一个表示区间 [l, r] 的节点,若 l < r, 则取 mid = ⌊l+r/2⌋,该节点的左儿子为 [l, mid],右儿子为 [mid + 1, r]:若 l = r,则它为叶子. 一棵树的匹配是指一个树边集合,满足任意两条边没有公共端点.一棵树的最大匹配是指所有合法 匹配方案中,所选树边最多的匹配方案. 给定一棵表示 [1, n] 的线段树,请求出它的最大匹配中有多少条边,并求出有多少种最大匹配的方 案.因为答案很…