[XSY4197] Snow(树形DP)

我们在树上的每个点iii上放aia_iai小点,初始时先让每个点单独减,这样要花费aia_iai之和的次数。

然后尝试把某些减合并。一个点上面的小点至多可以向两个相邻的小点连边(这两个小点不能在同一个点上)。每连一条边,合并次数+1,答案-1。

问题变成求一棵树内的最大合并次数。

首先明确该问题满足最优子结构,即考虑以UUU为根的子树时,若U,VU,VU,V上的小点u,vu,vu,v可以合并,合并u,vu,vu,v 一定不比 不合并u,vu,vu,v以让fau,ufa_u,ufau,u合并 劣。
在这里插入图片描述
感性证明:faufa_ufau可能可以和不是uuu的其它小点合并,即使找不到其它可以合并的小点,前面的方案也不必后面的方案劣。

gig_igi表示考虑完以iii为根的子树,在合并次数最多的情况下iii上最多有几个小点能和iii的父亲上的小点合并。转移讨论一下即可。
在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=2e5+10;
struct Edge{int v,nxt;}e[N<<1];
int cnt,head[N],n;
ll ans,a[N];
void adde(int u,int v){e[++cnt].v=v;e[cnt].nxt=head[u];head[u]=cnt;
}
void dfs(int u,int fa){ll sum=0,maxn=0,pr;for(int i=head[u];i;i=e[i].nxt){int v=e[i].v;if(v==fa)continue;dfs(v,u);sum+=a[v],maxn=max(maxn,a[v]);}if(sum-maxn>=maxn) pr=sum/2;else pr=sum-maxn;if(sum<=a[u]) ans-=sum;else{pr=min(pr,min(sum-a[u],a[u]));ans-=a[u]+pr;a[u]-=pr;}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);ans+=a[i];}for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);adde(u,v);adde(v,u);}dfs(1,0);printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Followme Devops实践之路

引言天下武功,唯快不破想要提高开发团队效率&#xff0c;势必要有一套完整而成熟的开发流程方案&#xff0c;除了sprint迭代开发模式之外,还有近几年流行的devops流程,都是可以大幅度提高开发效率的工具. 我们团队也不断探索、实践&#xff0c;最终形成了现有的一套体系&#x…

基环树小记

概念 基环树就是有n个点n条边的图&#xff08;比树多出现一个环&#xff09;。 特殊形态的基环树 无向树(N点N边无向图) 外向树(每个点只有一条入边) 内向树(每个点只有一条出边) 以上三种树有十分优秀的性质&#xff0c;就是可以直接将环作为根。就可以对每个环的子树进行单…

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能

事由&#xff1a;这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。顺带提一下&#xff1a;啊啊啊啊 等我仔细看文档的时候文档 发现它让我用Release的模式去运行benchmark。 emmm...其实我之前一直在用Debug模…

MATLAB线性规划相关函数用法

一.线性规划的Matlab标准形式及软件求解 1. MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量&#xff0c; A、 Aeq 为适当维数的矩阵&#xff0c;b 、beq为适当维数的列向量。 &#xff08;Aeq 对应约束条件中等式约束的系数矩阵&#xff0c;A为约不等式约束的系数矩…

.NET Core 出得云端入得本地,微软让跨平台应用勇敢表达

地铁公交的上班路上、咖啡馆里等人的时候&#xff0c;这些碎片化时间都是现代人学习和充电的机会&#xff0c;根据第42次CNNIC中国互联网发展状况统计报告&#xff0c;截至2018年6月&#xff0c;网络文学用户规模已达4.06亿&#xff0c;占网民总体50.6%&#xff1b;手机网络文学…

【每日一题】7月3日精讲—毒瘤xor

【每日一题】7月3日精讲—毒瘤xor 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K Special Judge, 64bit IO Format: %lld文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 输入描述: 第一行一个整…

了解改良圈算法

一.相关知识——Hamilton圈 什么是Hamilton圈&#xff1f; 哈密顿图&#xff08;哈密尔顿图&#xff09;&#xff08;英语&#xff1a;Hamiltonian path&#xff0c;或Traceable path&#xff09;是一个无向图&#xff0c;由天文学家哈密顿提出&#xff0c;由指定的起点前往指…

ASP.NET Core Middleware

中间件(Middleware)是ASP.NET Core中的一个重要特性。所谓中间件就是嵌入到应用管道中用于处理请求和响应的一段代码。ASP.NET Core Middleware可以分为两种类型&#xff1a;Conventional MiddlewareIMiddlewareConventional Middleware这种中间件没有实现特定的接口或者继承特…

NOIP复健计划——动态规划

树形DP [POI2011] DYN-Dynamite 二分KKK check(mid)&#xff1a; 能否选出mmm个点&#xff0c;使得 ∀i为关键点&#xff0c;Minjisselected{dis(i,j)}≤mid\forall i为关键点&#xff0c;Min_{j\ is\ selected}\{dis(i,j)\}\leq mid∀i为关键点&#xff0c;Minj is selecte…

【每日一题】7月6日精讲—平衡二叉树

来源&#xff1a;牛客网&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 1048576K&#xff0c;其他语言2097152K 64bit IO Format: %lld题目描述 平衡二叉树&#xff0c;顾名思义就…

MATLAB灰色预测

一.灰色预测 1.灰色系统下的灰色预测 <1>什么是灰色系统&#xff1f; 所谓的灰色系统其实就是夹杂在白色系统和黑色系统之中的一种系统&#xff0c;而白色系统就是全部信息已知的系统&#xff0c;黑色系统就是全部信息未知的系统。所以&#xff0c;夹在这两种系统中间…

ASP.NET Core 中的依赖注入

什么是依赖注入软件设计原则中有一个依赖倒置原则&#xff08;DIP&#xff09;&#xff0c;为了更好的解耦&#xff0c;讲究要依赖于抽象&#xff0c;不要依赖于具体。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖注入(DI)。什么是依…

【每日一题】7月7日题目精讲—最短路

来源&#xff1a;牛客网&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 1048576K&#xff0c;其他语言2097152K 64bit IO Format: %lld题目描述 给一个连通图&#xff0c;每次询问…

【活动(广州)】office365的开发者训练营

Office 365每月有超过1亿的商业活跃用户&#xff0c;是现有最大的生产力服务。Office 365为开发人员提供了一个令人难以置信的机会&#xff0c;包括业务关键数据和数百万用户&#xff0c;以及一个旨在让人们保持工作流程的平台。作为一名开发人员&#xff0c;您可以使用每天使用…

牛客网【每日一题】7月8日 Alliances

来源&#xff1a;牛客网 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 5秒&#xff0c;其他语言10秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 树国是一个有n个城市的国家&#xff0c;城市编号…

Ocelot简易教程(四)之请求聚合以及服务发现

上篇文章给大家讲解了Ocelot的一些特性并对路由进行了详细的介绍&#xff0c;今天呢就大家一起来学习下Ocelot的请求聚合以及服务发现功能。希望能对大家有所帮助。作者&#xff1a;依乐祝原文地址&#xff1a;https://www.cnblogs.com/yilezhu/p/9695639.html请求聚合Ocelot允…

邓公数据结构C++语言版学习笔记1

1. 对于计算幂2n2^n2n的算法优化 暴力算法时间复杂度O(n)O(n)O(n) __int64 power2BF_I(int n) //幂函数2^n算法&#xff08;蛮力迭代版&#xff09;&#xff0c;n > 0{ __int64 pow 1; //O(1)&#xff1a;累积器刜始化为2^0while (0 < n --) //O(n)&#xff1a;迭代n轮…

HttpClientFactory系列二:集成Polly处理瞬态故障

前言&#xff1a;最近&#xff0c;同事在工作中遇到了使用HttpClient,有些请求超时的问题&#xff0c;辅导员让我下去调研一下&#xff0c;HttpClinet的使用方式已经改成了之前博客中提到的方式&#xff0c;问题的原因我已经找到了&#xff0c;就是因为使用了伪异步&#xff0c…

邓公数据结构C++语言版学习笔记——二叉树

二叉树的遍历 一. preorder——先序遍历VLR 1. 递归先序遍历 2. 迭代先序遍历 3.先序遍历图解 二. inorder——先序遍历LVR 1. 递归中序遍历 2.迭代中序遍历 3.迭代中序遍历优化空间复杂度 <1>定义直接后继 <2>借用直接后继优化算法 解释&#xff1a;…

二分图匹配--匈牙利算法

文章目录二分图&#xff1a;匹配匈牙利算法代码&#xff1a;二分图&#xff1a; 二分图是一个无向图&#xff0c;点集分成子集X和Y&#xff0c;图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时&#xff08;包括0&#xff09;&#xff0c;G就是一个…