正题

题目链接:https://www.ybtoj.com.cn/contest/70/problem/3


题目大意

一棵树nnn个节点,每条边(x,y,a,b)(x,y,a,b)(x,y,a,b),可以花费111的代价让一条边的a,ba,ba,b都减去111,但是不能小于000,要求最少代价使得每条边满足yyy子树的边的aaa和不超过bbb。


解题思路

发现如果没有不能小于000的条件很好做,这样我们肯定优先减去最下面的aia_iai​即可,然后减去上面时bib_ibi​减少不会影响答案,因为都已经满足下面的已经减完了。

但是有可能a>ba>ba>b此时aaa的权值就不能减完,对于这些一定不能减去的权值,我们之间让整条到根节点上的bbb减去这些值就好了。

时间复杂度O(n)O(n)O(n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2e5+10,inf=1e18;
struct node{ll to,next;
}a[N*2];
ll n,tot,ls[N],w[N],lim[N],f[N];
void addl(ll x,ll y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return;
}
ll dfs(ll x){ll sum=0,k;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;sum+=dfs(y);}k=max(0ll,w[x]-lim[x]);lim[x]-=sum;w[x]-=k;return sum+k;
}
void solve(ll x){ll tmp=0;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;solve(y);f[x]+=f[y];tmp+=w[y];}f[x]=max(f[x],tmp-lim[x]);w[x]+=tmp;return;
}
int main()
{freopen("tree.in","r",stdin);freopen("tree.out","w",stdout);scanf("%lld",&n);for(ll i=1;i<n;i++){ll x,y,u,v;scanf("%lld%lld%lld%lld",&x,&y,&u,&v);addl(x,y);w[y]=u;lim[y]=v;}lim[1]=inf;dfs(1);for(ll i=1;i<=n;i++)if(lim[i]<0)return printf("-1")&0;solve(1);printf("%lld\n",f[1]);
}

YbtOJ#20089-[NOIP2020模拟赛B组Day10]平衡的树【贪心】相关推荐

  1. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  2. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列,求有多少个区间[l,r][l,r][l,r]的平均值在[L,R ...

  3. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/4 题目大意 mmm个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci ...

  4. YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/3 题目大意 求有多少个nnn个点mmm条边的无向图满足 有连边的点之间编号差不超过kkk 所有 ...

  5. YbtOj 冲刺 NOIP2020 模拟赛 Day10 T1 区间均值

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  6. YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/4 题目大意 平面上nnn个红点,nnn个蓝点,对于没一个红点求一个与它纵坐标距离不超过ddd的 ...

  7. YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/3 题目大意 给出两个字符串A,BA,BA,B,求它们的最长公共子序列. 解题思路 先考虑朴素的 ...

  8. 2021.08.09【普及组】模拟赛C组比赛总结

    文章目录 2021.08.09[普及组]模拟赛C组比赛总结 写在前面: T1 :[普及模拟]生产武器 题目大意: 正解: T2 :[普及模拟]城市连接 题目大意: 正解: T3 :[普及模拟]抢救文件 ...

  9. 2021-07-17【普及组】模拟赛C组

    文章目录 2021.07.17[普及组]模拟赛C组 写在前面: T1: 题目大意: 正解: T2: 题目大意: 正解: T3: 题目大意: 正解: T4: 题目大意: 正解: 2021.07.17[普 ...

最新文章

  1. 微软职位内部推荐-Software Engineer II-News
  2. java是所有资源文件的索引_《Java程序设计》课程教学资源索引
  3. clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器
  4. amazon云服务_亚马逊Simple Worklfow服务的骆驼演示
  5. 作者:​徐优俊(1990-),男,北京大学前沿交叉学科研究院博士生。
  6. C++11 并发指南五(std::condition_variable 详解)
  7. ruby require
  8. Samba 共享目录设置在Home目录下
  9. lambda,reserve list, list comprehension, string of slice
  10. 所有的困苦都是有用意的
  11. id长度 雪花算法_GitHub - cloudyan/snowflake: Twitter的雪花算法(snowflake)分布式自增ID...
  12. SQL Server修改表结构,不允许保存更改解决方案
  13. 计算机考研408(计算机网络(持续更新))
  14. 黑鲨3能用鸿蒙系统吗,黑鲨游戏手机3支持语音操控:没有三头六臂照样吃鸡
  15. 常见中文字体英文名称以及windows默认字体类型
  16. 【转】感觉像绕口令般的英语组句
  17. MySQL运行原理与基础架构
  18. Nothing is impossble
  19. 超市积分管理系统(论文+源码)
  20. Airflow使用MsSqlHook与数据库交互

热门文章

  1. oracle unpivot 空值,sql – 处理UNPIVOT中的NULL值
  2. 用wamper打开php源码_php源码该怎么设置数据库
  3. 浅谈Redis五种数据结构的底层原理
  4. 用gradle启动java项目_构建Java项目
  5. 层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...
  6. 695.岛屿的最大面积(026)BFS
  7. 二叉树最近公共祖先相关题目(Leetcode题解-Python语言)
  8. 区域转换为二值图像_Matlab图像处理系列教程(一)
  9. hash table(开放寻址法-二次探查实现的哈希表)
  10. 括号匹配+Java栈