\(\mathcal{Description}\)

  Link.

  给定一棵 \(n\) 个点的无根树,点有点权,每次选择两个不同的叶子,使它们间的简单路径的所有点权 \(-1\),问能否将所有点权变成 \(0\)。

  \(n\le10^5\)。

\(\mathcal{Solution}\)

  这不就是我那道题的削弱版么 www。

  考虑叶子 \(u\),显然有 \(val_u\) 条路径经过 \(u\)。DFS 回溯时考虑合并儿子们的路径。假设儿子们向上的路径共 \(s\) 条,单个儿子向上路径最多有 \(m\) 条;我们拿 \(a\) 对路径在当前结点 \(u\) 处匹配成完整路径,剩下 \(b\) 条继续向上,那么有:

\[\begin{cases}
a+b=val_u\\
2a+b=s\\
a\le\min\{\lfloor\frac{s}2\rfloor,s-m\}
\end{cases}
\]

  解出 \(a,b\),判断是否合法即可。

\(\mathcal{Code}\)

#include <cstdio>
#include <cstdlib>
#include <iostream> typedef long long LL; const int MAXN = 1e5;
int n, ecnt, val[MAXN + 5], head[MAXN + 5], d[MAXN + 5]; struct Edge { int to, nxt; } graph[MAXN * 2 + 5]; inline void link ( const int s, const int t ) {
graph[++ ecnt] = { t, head[s] };
head[s] = ecnt;
} inline int DFS ( const int u, const int f ) {
if ( d[u] == 1 ) return val[u];
LL sum = 0; int mx = 0;
for ( int i = head[u], v; i; i = graph[i].nxt ) {
if ( ( v = graph[i].to ) ^ f ) {
int up = DFS ( v, u );
sum += up, mx = std::max ( mx, up );
}
}
if ( sum - val[u] > std::min ( sum >> 1, sum - mx )
|| 2 * val[u] < sum || sum < val[u] ) puts ( "NO" ), exit ( 0 );
return 2 * val[u] - sum;
// a+b=val, 2a+b=sum, a<=min{sum/2,sum-mx}
} int main () {
scanf ( "%d", &n );
for ( int i = 1; i <= n; ++ i ) scanf ( "%d", &val[i] );
for ( int i = 1, u, v; i < n; ++ i ) {
scanf ( "%d %d", &u, &v ), ++ d[u], ++ d[v];
link ( u, v ), link ( v, u );
}
if ( n == 2 ) return puts ( val[1] == val[2] ? "YES" : "NO" ), 0;
for ( int i = 1; i <= n; ++ i ) if ( d[i] > 1 ) return puts ( DFS ( i, 0 ) ? "NO" : "YES" ), 0;
return 0;
}

Solution -「AGC 010C」「AT 2304」Cleaning的更多相关文章

  1. Solution -「CTS 2019」「洛谷 P5404」氪金手游

    \(\mathcal{Description}\)   Link.   有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...

  2. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  3. 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇

    http://www.4gamer.net/games/216/G021678/20140714079/     连载第2回的本回,  Arc System Works开发的格斗游戏「GUILTY G ...

  4. Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory

    Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...

  5. SSH连接时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法

    用ssh來操控github,沒想到連線時,出現「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」,後面還有一大串英文,這時當然要向Google大神求助 ...

  6. 「Windows MFC 」「Edit Control」 控件

    「Windows MFC 」「Edit Control」 控件

  7. 「ZJOI2019」&「十二省联考 2019」题解索引

    「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...

  8. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  9. Loj #6073.「2017 山东一轮集训 Day5」距离

    Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...

随机推荐

  1. 第10组 Beta冲刺 (5/5)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14018671.html ·作业博客:https://edu.cnblogs.co ...

  2. 移动端字体图标不显示的Bug

    用16进制编码的字体图标在部分小米机型显示不正常. 测试机型:小米1,小米1s,小米2浏览器:微信6.1内置浏览器,QQ浏览器 5.7 X5内核字体图标:不显示svg图标:显示正常 以下来自额微信内置 ...

  3. 从SQL Server数据库导出SQL语句

    不同于直接 备份/恢复 或者 导入/导出 数据库操作. 新版本SQL Server客户端中还可以生成相对应的SQL语句. 非常方便与查看和与其他人共享. 连接上数据库后, 右击数据库, 选择 Gene ...

  4. .Net Core依赖注入

    一.配置文件的读取 利用Startup类中的configuration读取appsettings.json中的配置 { "Logging": { "LogLevel&qu ...

  5. 关于网页中鼠标动作 onfocus onblur focus()

    其中: onFocus事件就是当光标落在文本框中时发生的事件. onBlur事件是光标失去焦点时发生的事件. 例如: <textarea onfocus="if(hello') {va ...

  6. golang中的GOPATH使用和简单项目配置

    GOPATH 是 Go 语言的工作目录,他的值可以是一个目录路径,也可以是多个目录路径,每个目录都代表 go 语言的一个工作区. 我们开发 Golang 项目时,需要依赖一些别的代码包,这些包的存放路 ...

  7. golang中循环或递归求阶乘

    package main import "fmt" func factorialFor(num int) (ret int) { // 循环求阶乘 ret = 1 for i := ...

  8. gin中如何自定义中间件

    package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { // 新建一个没有 ...

  9. java接口应用

    1 package face_09; 2 /* 3 * 笔记本电脑使用. 4 * 为了扩展笔记本的功能,但日后出现什么功能设备不知道. 5 * 6 * 定义了一个规则,只要日后出现的设备都符合这个规则 ...

  10. es6 快速入门 系列 —— 类 (class)

    其他章节请看: es6 快速入门 系列 类 类(class)是 javascript 新特性的一个重要组成部分,这一特性提供了一种更简洁的语法和更好的功能,可以让你通过一个安全.一致的方式来自定义对象 ...