首页 > 其他分享 >[点分治记录] P4292 [WC2010]重建计划

[点分治记录] P4292 [WC2010]重建计划

时间:2023-01-07 19:13:12浏览次数:58  
标签:dep 分治 子树中 处理 枚举 WC2010 权值 P4292

题目

看到需要求的柿子首先想到分数规划。也就是二分答案,然后在check里将所有边权减去$mid$,检验是否有路经权值$\ge$0。

现在问题转化成求路径长度在 $[l,r]$ 范围内的权值和最大的路径。

考虑使用点分治解决这道题,而上面的问题与点分治模板题只差两点:

1. 要求路径权值和最大而非一个固定值。

2. 长度在 $[l,r]$ 范围内而非一个固定值。

上面两点的处理方式:

(1)用桶记录深度为 $dep$ 的点,到目前选的重心的最大距离。(注意这里 $dep$ 不是原树的 $dep$,实际上是原树该点的 $dep$ 减去目前的重心的 $dep$)

(2)在使用该点的已处理子树的信息与该点目前正在处理的子树的信息修改答案时,肯定不能同时枚举在已处理的子树中选择的点的$dep$值和目前正在处理的子树中选择的点的$dep$值,所以考虑优化这一部分。假设在已处理的子树中选择的点的 $dep$ 为 $dep_1$,在目前正在处理的子树中选择的点的 $dep$ 为 $dep_2$,可以保留枚举 $dep_2$ 的这一层循环,即第一层循环正常枚举 $dep_2$。由于 $dep_1+dep_2$ 的值在 $[l,r]$ 范围内,所以$dep_1$ 的范围是 $[l-dep_2,r-dep_2]$,即可使用单调队列进行维护。

所以这道题就做完了。

标签:dep,分治,子树中,处理,枚举,WC2010,权值,P4292
From: https://www.cnblogs.com/nebula-xy/p/17032697.html

相关文章

  • 【学习笔记】分治
    分治相关的东西我基本都不会。CDQ分治最经典的分治,一般用于去掉一层偏序。对于一个区间\([l,r]\)的答案,我们可以找一个中点\(mid\),递归计算出\([l,mid]\)的答案......
  • 根号分治
    概述根号分治,是一种对数据进行分治的分治方式。具体来说,如果所要求进行的过程满足如下性质:根号以下的数据的种类很少,可以全部维护之;根号以上的数据,直接暴力的......
  • 点分治与点分树
    点分治和点分树真的是各种意义上的好东西。不仅好玩,而且写完一看自己的代码5.几kb:“wc我今天搞了好多学习”。在做关于树的题时,我们会遇到一类题型:题目跟路径有关,你找到......
  • Tree 树分治
    //题意:询问一棵树上长度不超过k的简单路径有多少条//思路:貌似可以用dsuontree但好像要用到平衡树之类的,之后再看看//https://tqltqltqlorzorzorz.blog.luogu......
  • Race 树分治写法
    //题意:一棵树有边权,询问一条长度为k的简单路径所需的最小步数//思路:点分治,主要是合并的思路,因为是要求最小步数,所以我们对于每一种长度记最小步数即可//#include<bi......
  • 简单聊聊:递归,缓存,分治,回溯
    一、初识递归递归函数=终止条件+递归关系终止条件:当大问题被拆解成能轻松解决的小问题时,运行终止条件中的逻辑递归关系:定义如何将大问题拆解为小问题例子:小名跑步。......
  • POJ 2114 Boatherds / Luogu P3806 【模板】点分治1
    POJ2114Boatherds/LuoguP3806【模板】点分治1难度:\(\mathtt{?}\)/省选/NOI-标签:点分治\(\mathtt{blog}\)\(n\)个点的树,边\((u_i,v_i)\)有边权\(w_i\),\(m\)......
  • Make Rounddog Happy 启发式分治
    //题意:给定一个序列,询问他有多少个合法子序列//合法条件:在区间内不会出现相同的数,同时区间最大值-(区间长度)<=给定常数k//思路:启发式分治,详情见博客#include<bi......
  • 好序列 启发式分治
      //题意:给定一个序列,如果这个序列的每个子区间都满足:至少有一个数只在这个区间内出现一次。那么这个序列称为好序列//思路:本题可以用点分治做,这里采用的是启发式......
  • 【题解】P3515 [POI2011]Lightning Conductor(二分栈/分治优化DP)
    [POI2011]LightningConductor题面翻译给定一个长度为\(n\)的序列\(\{a_n\}\),对于每个\(i\in[1,n]\),求出一个最小的非负整数\(p\),使得\(\forallj\in[1,n]\),都......