解析


它还真的不难。
乐。

这题没做出来有些谔谔。
外层wqs二分显而易见,里面不知道为啥我总觉得这个题可以贪心。
然后一直试图在原树直径上下功夫,一筹莫展。
看到题解“dp”两个字这题也就做完了…
就相当于要把一棵树分成若干条无交链,每分条需要一定代价,最大化价值和。
记录以下每个点向儿子连几条边以及是否和父亲连边之类的即可。
pair用于wqs二分的dp是真香)

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
using namespace std;const int N=6e5+100;
const ll inf=3e11;inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}int n,m,k;struct node{int to,nxt,w;
}p[N<<1];
int fi[N],cnt;
inline void addline(int x,int y,int w){p[++cnt]=(node){y,fi[x],w};fi[x]=cnt;
}
#define pr pair<ll,ll>
#define mkp make_pair
pr operator + (pr a,pr b){return mkp(a.first+b.first,a.second+b.second);}
pr operator + (pr a,ll b){return mkp(a.first+b,a.second);}
pr dp[3][N];
ll w;
void dfs(int x,int fa){dp[0][x]=mkp(0,0);dp[1][x]=dp[2][x]=mkp(-inf,0);for(int i=fi[x];~i;i=p[i].nxt){int to=p[i].to;if(to==fa) continue;dfs(to,x);dp[2][x]=max(dp[2][x],max(dp[2][x]+dp[0][to],(dp[1][x]+dp[1][to])+p[i].w));dp[1][x]=max(dp[1][x],max(dp[1][x]+dp[0][to],(dp[0][x]+dp[1][to])+p[i].w));dp[0][x]=max(dp[0][x],dp[0][x]+dp[0][to]);}dp[1][x]=max(dp[1][x],dp[0][x]);dp[0][x]=max(dp[0][x],mkp(dp[0][x].first+w,dp[0][x].second+1));dp[0][x]=max(dp[0][x],mkp(dp[1][x].first+w,dp[1][x].second+1));dp[0][x]=max(dp[0][x],mkp(dp[2][x].first+w,dp[2][x].second+1));return;
}signed main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);
#endifmemset(fi,-1,sizeof(fi));cnt=-1;n=read();m=read()+1;for(int i=1;i<n;i++){int x=read(),y=read(),w=read();addline(x,y,w);addline(y,x,w);}ll st=-inf,ed=inf;while(st<ed){ll mid=(st+ed)>>1;w=mid;dfs(1,0);if(dp[0][1].second>=m) ed=mid;else st=mid+1;}w=st;debug("w=%lld\n",w);dfs(1,0);printf("%lld\n",dp[0][1].first-m*w);return 0;
}

P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)相关推荐

  1. P4383 [八省联考2018]林克卡特树(树形dp+wqs二分)

    [八省联考2018]林克卡特树 题目大意:给定一棵有负权边的树,现在必须恰好删去 k k k条边,并加上恰好 k k k条权值为 0 0 0的边,要求最大化它的直径长度. 首先考虑删去 K K K条边 ...

  2. 洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)

    题目描述 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做"LC ...

  3. P4383 [八省联考2018]林克卡特树lct 树形DP+凸优化/带权二分

    $ \color{#0066ff}{ 题目描述 }$ 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的 ...

  4. 洛谷P4383 [八省联考2018]林克卡特树

    题目描述 题解 题目可以转化一下,就是要在原树中选出 k+1k+1k+1 条不相交的链使得其权值和最大. 考虑暴力 dp\text{dp}dp : f[u][i][0/1/2]f[u][i][0/1/ ...

  5. P4383 [八省联考2018]林克卡特树lct

    题目链接 题意分析 一句话题意就是 : 让你选出\((k+1)\)条不相交的链 使得这些链的边权总和最大 (这些链可以是点) 我们考虑使用树形\(DP\) \(dp[i][j][0/1/2]\)表示以 ...

  6. LuoguP4383 [八省联考2018]林克卡特树lct

    LuoguP4383 [八省联考2018]林克卡特树lct https://www.luogu.org/problemnew/show/P4383 分析: 题意等价于选择\(K\)条点不相交的链,使得 ...

  7. luogu4383 bzoj5252[八省联考2018]林克卡特树lct

    ** [八省联考2018]林克卡特树lct** luogu bzoj 分析 很神仙的一道wqs二分.是真的不会切>-< 如果已经切完了,最优秀的方案就是每个联通块搞直径然后连起来一定是最优 ...

  8. [八省联考2018]林克卡特树

    林克卡特树 题解 挺简单的一道题. 原题断 k k k条边连 k k k条边权为 0 0 0的边相当于寻去 k + 1 k+1 k+1条不相交链出来,将它们连上得到的结果. 所以我们要从原树中选取 k ...

  9. dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)

    qwq 安利一个凸优化讲的比较好的博客 https://www.cnblogs.com/Gloid/p/9433783.html 但是他的暴力部分略微有点问题 qwq 我还是详细的讲一下这个题+这个知 ...

最新文章

  1. 二手服务器cpu性能,二手服务器cpu当主机
  2. python关闭读写的所有的文件-Python读写txt文本文件的操作方法全解析
  3. 常见的16进制文件头
  4. PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)
  5. 不会点SQLite,都不好意思说自己是开发的
  6. Oracle Bitmap 索引结构、如何存储及其优势
  7. java redis工具类_redis Java工具类详解
  8. Android使用BaseAdapter绑定ListView实现不同item的TextView多种文字变色
  9. 普中28335开发攻略_带你了解TI的DSP入门芯片TMS320F28335
  10. sqluldr2的介绍
  11. Unity GUI 中文显示
  12. 【LOJ#3097】[SNOI2019]通信(费用流)
  13. fbx 骨架_骨架修剪
  14. ever 逾期_4ever的完整形式是什么?
  15. 一亩茶园:传颂茶的不朽篇章
  16. AI芯片:寒武纪DianNao,英伟达NVDLA和谷歌TPU1的芯片运算架构对比分析
  17. visualhunt - 免注册直接下载优质免费商用图片的好用网站
  18. bootloader的功能介绍
  19. 常见的连续型随机变量分布
  20. Bloomberg彭博终端函数和EXCEL插件

热门文章

  1. JDK安装及java环境配置_JDK安装及Java环境变量配置
  2. oracle中sum和count可以嵌套吗_【分享吧】Oracle查询转换
  3. 空值为0非空为1_万达广场4周年,1降到底!0元送万张杂技团门票、人气餐饮6.8折,这波周年庆我先锁为敬...
  4. linux创建目录目录文件,Linux创建目录和文件管理教程
  5. java类同步_Java中方法,对象,类的同步
  6. 算法设计与分析——递归与分治——归并排序
  7. 值得关注的HTML基础
  8. vue实现侧边折叠菜单栏手风琴效果
  9. java 变成题_Java 习题8 参考答案及解析
  10. Java多线程(review)