题目描述

小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战。

游戏中有一个叫做“LCT” 的挑战,它的规则是这样子的:现在有一个N 个点的 树(Tree),每条边有一个整数边权vi ,若vi >= 0,表示走这条边会获得vi 的收益;若vi < 0 ,则表示走这条边需要支付- vi 的过路费。小L 需要控制主角Link 切掉(Cut)树上的 恰好K 条边,然后再连接 K 条边权为 0 的边,得到一棵新的树。接着,他会选择树上的两个点p; q ,并沿着树上连接这两点的简单路径从p 走到q ,并为经过的每条边支付过路费/ 获取相应收益。

海拉鲁大陆之神TemporaryDO 想考验一下Link。他告诉Link,如果Link 能切掉 合适的边、选择合适的路径从而使 总收益 - 总过路费最大化的话,就把传说中的大师之剑送给他。

小 L 想得到大师之剑,于是他找到了你来帮忙,请你告诉他,Link 能得到的 总收益 - 总过路费最大是多少。

题解

  • 大爷的题解比较详细就直接上大爷的题解吧  戳戳戳

代码

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #define ll long long
 5 const int inf=1e13,N=300010;
 6 struct edge { int v,w,from; }e[N<<1];
 7 int n,k,cnt,head[N];
 8 ll sum,q,l,r,ans;
 9 void insert(int u,int v,int w) { e[++cnt].v=v,e[cnt].w=w,e[cnt].from=head[u],head[u]=cnt; }
10 struct data
11 {
12     int c; ll v;
13     data operator + (data d) {data a;a.v=v+d.v;a.c=c+d.c;return a;}
14     bool operator < (data d) {return v<d.v||(v==d.v&&c<d.c);}
15 }f[N][3],p[3];
16 data be(ll v, int c) {data d;d.v=v;d.c=c;return d;}
17 data max(data a,data b) {return a<b?b:a;}
18 void dfs(int u,int fa)
19 {
20     for (int i=head[u];i;i=e[i].from)
21     {
22         int v=e[i].v;
23         if (v==fa) continue;
24         dfs(v,u),f[u][2]=max(f[u][2]+f[v][0],f[u][1]+f[v][1]+be(e[i].w-q,1)),f[u][1]=max(f[u][0]+f[v][1]+be(e[i].w,0),f[u][1]+f[v][0]),f[u][0]=f[u][0]+f[v][0];
25     }
26     f[u][0]=max(f[u][0],max(f[u][1]+be(-q,1),f[u][2]));
27 }
28 void check(ll x)
29 {
30     q=x;
31     for (int i=1;i<=n;i++) f[i][0]=be(0,0),f[i][2]=be(-q,1),f[i][1]=be(0,0);
32     dfs(1,0),sum=f[1][0].v,cnt=f[1][0].c;
33 }
34 int main()
35 {
36     scanf("%d%d",&n,&k),k++;
37     for (int i=1,u,v,w;i<n;i++) scanf("%d%d%d",&u,&v,&w),insert(u,v,w),insert(v,u,w),r+=(w>0)?w:-w;
38     l=-r;
39     while (l<=r)
40     {
41         ll mid=(l+r)>>1;
42         check(mid);
43         if (cnt>=k) l=mid+1,ans=mid; else r=mid-1;
44     }
45     check(ans),printf("%lld",sum+k*ans);
46 }

题目描述

小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战。

游戏中有一个叫做“LCT” 的挑战,它的规则是这样子的:现在有一个N 个点的 树(Tree),每条边有一个整数边权vi ,若vi >= 0,表示走这条边会获得vi 的收益;若vi < 0 ,则表示走这条边需要支付- vi 的过路费。小L 需要控制主角Link 切掉(Cut)树上的 恰好K 条边,然后再连接 K 条边权为 0 的边,得到一棵新的树。接着,他会选择树上的两个点p; q ,并沿着树上连接这两点的简单路径从p 走到q ,并为经过的每条边支付过路费/ 获取相应收益。

海拉鲁大陆之神TemporaryDO 想考验一下Link。他告诉Link,如果Link 能切掉 合适的边、选择合适的路径从而使 总收益 - 总过路费最大化的话,就把传说中的大师之剑送给他。

小 L 想得到大师之剑,于是他找到了你来帮忙,请你告诉他,Link 能得到的 总收益 - 总过路费最大是多少。

转载于:https://www.cnblogs.com/Comfortable/p/11249290.html

[二分][dp凸优化] Luogu P4383 林克卡特树lct相关推荐

  1. [学习笔记]dp凸优化/wqs二分[八省联考2018]林克卡特树lct

    废话 很早就想学wqs二分,结果拖了好久.因为以前是看了几遍都没有懂..(太菜了 后来因为计划里凸优化的题(比如CF321E Ciel and Gondolas,CF739E Gosha is hun ...

  2. 洛谷P4383 林克卡特树

    题意:树上最长不相交k条链. 1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 5 ...

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

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

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

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

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

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

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

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

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

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

  8. 洛谷.4383.[八省联考2018]林克卡特树lct(树形DP 带权二分)

    题目链接 \(Description\) 给定一棵边带权的树.求删掉K条边.再连上K条权为0的边后,新树的最大直径. \(n,K\leq3\times10^5\). \(Solution\) 题目可以 ...

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

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

最新文章

  1. No Maybe Please
  2. 技术胖1-4季视频复习— (看视频笔记)
  3. c语言ll和 amp amp 优先级,关于C语言自增自减运算符的灵活使用.pdf
  4. mysql 支持全文搜索_MySQL全文本搜索:启用全文本搜索支持
  5. 59. 螺旋矩阵 ||
  6. JVM(十),垃圾回收之新生代垃圾收集器
  7. java中4种修饰符访问权限的区别
  8. python程序设计基础第二版pdf下载_Python语言程序设计基础(第二版) 包含Python语言程序设计基础(第二版)pdf - 下载 - 搜珍网...
  9. mysql如何实现cas机制_CAS机制详解
  10. ROOT大师PC版 v1.7.6.7190 绿色免费版
  11. 闽南歌歌词有一句电子计算机,一首闽南歌,有一句歌词是(提起男儿的志气)歌名是什么?...
  12. python爬虫自动下载网页链接
  13. 手工皮具的大坑之路-封边感悟与工具
  14. 华为服务器ip从bios哪里修改,服务器bios设置ip
  15. 改掉这些坏习惯让你的学习效率升高
  16. TM1637数码管显示 HAL库
  17. 微信支付-APP支付
  18. 领导的艺术:工作里怎么样做,才是包容
  19. (转载自)章文嵩博士和他背后的负载均衡帝国
  20. Scipy中积分的计算

热门文章

  1. Android 插件化原理(一),通过dex文件调用插件app代码
  2. 贝叶斯分析-学习笔记(超干的干货)
  3. 解析FPS,刷新率,垂直同步
  4. 大力普及“他妈的”有助于语言交流
  5. Placement Rules 使用文档
  6. 赛桨PaddleScience v1.0 Beta:基于飞桨核心框架的科学计算通用求解器
  7. 半导体器件物理【4】晶胞晶格晶面晶向
  8. iOS手机自带浏览器Safari无法长按保存图片
  9. 【檀越剑指大厂—SpringMVC】SpringMVC篇
  10. 2021年职业院校技能大赛“网络安全”项目江西省A模块