【BZOJ1758】重建计划(点分治)】的更多相关文章

点分治,对于每个分治中心,考虑求出经过它的符合长度条件的链的最大权值和. 从分治中心dfs下去取出所有链,为了防止两条链属于同一个子树,我们一个子树一个子树地处理. 用s1[i]记录目前分治中心伸下去的链中长度为i的链的最大权值,s2[i]记录新子树中的链的最大权值. 分数规划,考虑合并,枚举长度,由于另一个长度在一个滑动窗口中,所以使用单调队列求解即可. 为了保证复杂度,讲子树按高度排序.注意初始化等问题. #include<cstdio> #include<vector> #i…
Description 传送门 Solution 看到那个式子,显然想到分数规划...(不然好难呢) 然后二分答案,则每条边的权值设为g(e)-ans.最后要让路径长度在[L,U]范围内的路径权值>=0 接下来我们就要找路径了.. 考虑树形dp或者分治. 假如是树形dp需要用长链剖分优化. 我的写法是点分治,非常暴力的思路em.就是枚举经过某个点的路径,注意判断长度.mx[i]记录子树内深度为i的点到目前重心的最大权值. Code #include<iostream> #include&…
题目大意: 求长度$\in [L,U]$的路径的最大边权和平均值. 题解 首先二分就不用说了,分数规划大家都懂. 这题有非常显然的点分治做法,但还是借着这个题学一波长链剖分. 其长链剖分本身也没啥,就是重链剖分中判断中儿子的参数由比较子树大小改为了子树最深点的深度. 这样一来,有一个很显然的性质,所有长链长度值和$<n$,然而这是废话,因为整棵树的边也只有$n-1$条. 长链剖分还有一个非常强大的能力,可以在线性的时间内合并以深度为下标的子树信息. 对于节点$x$和其长链连向的儿子$y$,由于在…
题目描述 题目传送门 分析 看到比值的形式就想到 \(01分数规划\),二分答案 设当前的值为 \(mids\) 如果存在\(\frac{\sum _{e \in S} v(e)}{|S|} \geq mids\) 那么 \(\sum _{e \in S} v(e)-|S| \times mids \geq 0\) 我们把每一条边的权值减去 \(mids\) 问题就变成了找出一条长度在 \([l,r]\) 之间的简单路径 是的路径的长度大于等于 \(0\) 我们可以开一个权值线段树去维护,但这样…
长链剖分学习笔记 说到树的链剖,大多数人都会首先想到重链剖分.的确,目前重链剖分在OI中有更加多样化的应用,但它大多时候是替代不了长链剖分的. 重链剖分是把size最大的儿子当成重儿子,顾名思义长链剖分就是把 len (到叶子节点的距离) 最长的儿子当成重儿子. 由于是和深度有关的算法,长链剖分常用于优化一些和深度有关的dp或其他算法. 具体按照蒟蒻的理解来说,就是类似启发式合并的那种感觉,每个点为根的子树都可以看成一条最长的链上支出了一些叉,而我们想把这棵子树捋成只有一条链,毕竟链多清晰明了,…
[BZOJ1758][WC2010]重建计划(点分治,单调队列) 题面 BZOJ 洛谷 Description Input 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案,每行三个正整数Ai,Bi,Vi分别表示道路(Ai,Bi),其价值为Vi 其中城市由1..N进行标号 Output 输出最大平均估值,保留三位小数 Sample Input 4 2 3 1 2 1 1 3 2 1…
题解: 这题我居然做了一星期?... 平均值的极值其实也可以算是一种分数规划,只不过分母上b[i]=1 然后我们就可以二分这个值.类似与 HNOI最小圈 如果没有 链的长度的限制的话,我们直接两遍dfs就可以求出以每个点为起点的最长链,然后看看有没有权值和>0的即可. 但现在链有长度限制... 所以膜拜题解... 发现我们可以点分治,然后每个节点的合法对象都是一段连续的区间, 当用某个值来更新答案的时候是一个连续的区间. 所以可以单调队列来维护定长的区间最大值问题. 实现的时候好多细节...还好…
「WC2010」重建计划(长链剖分/点分治) 题目描述 有一棵大小为 \(n\) 的树,给定 \(L, R\) ,要求找到一条长度在 \([L, R]\) 的路径,并且路径上边权的平均值最大 \(1 \leq n,L,R \leq 10^5\) 解题思路 : 前几天沉迷初赛来写几道数据结构恢复一下代码能力,坑填完之后可能就要开始啃思维题了QwQ. 这个题貌似长链剖分和点分复杂度都是 \(O(nlog^2n)\) 的,点分好久都没碰了,长链剖分也只有暑假里口胡了几个多校的题而已,先讲做法吧 这个题…
[Wc2010]重建计划 Time Limit: 40 Sec  Memory Limit: 162 MBSubmit: 4345  Solved: 1054[Submit][Status][Discuss] Description Input 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案,每行三个正整数Ai,Bi,Vi分别表示道路(Ai,Bi),其价值为Vi 其中城市由1..N…
题目链接:重建计划 这道题现在已经成为一道板子题了…… 这是个非常显然的0-1分数规划,可以二分答案之后树分治判定一下.注意树分治的时候如果使用单调队列,需要把所有儿子预先按最大深度排好序,否则会被扫把型的数据卡到\(n^2\log n\). 然后跑得非常慢……于是把二分答案改成了Dinkelbach迭代法.Dinkelbach迭代法就是每次用当前最优解来更新答案的界,跑得比香港记者还快 听说这玩意儿复杂度上界是\(\log\)级别的?然而我并不会证……感觉这玩意儿就是玄学啊…… 二分答案代码:…