bzoj千题计划163:bzoj1060: [ZJOI2007]时态同步
http://www.lydsy.com/JudgeOnline/problem.php?id=1060
以激发器所在节点为根
终止节点一定是叶节点
记录点的子树内最深的终止节点
然后从根往下使用道具
道具的使用次数为
整棵树最深的叶子节点深度-本节点子树内最深的叶子节点深度-本节点的祖先节点已使用的道具次数
- #include<cstdio>
- #include<iostream>
- using namespace std;
- #define N 500001
- int front[N],to[N<<],nxt[N<<],tot,val[N<<];
- long long dep[N],mx[N];
- long long tim;
- long long ans,sum[N];
- void read(int &x)
- {
- x=; char c=getchar();
- while(!isdigit(c)) c=getchar();
- while(isdigit(c)) { x=x*+c-''; c=getchar(); }
- }
- void add(int u,int v,int w)
- {
- to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; val[tot]=w;
- to[++tot]=u; nxt[tot]=front[v]; front[v]=tot; val[tot]=w;
- }
- void dfs(int x,int y)
- {
- mx[x]=dep[x];
- tim=max(tim,dep[x]);
- for(int i=front[x];i;i=nxt[i])
- if(to[i]!=y)
- {
- dep[to[i]]=dep[x]+val[i];
- dfs(to[i],x);
- mx[x]=max(mx[x],mx[to[i]]);
- }
- }
- void dfs2(int x,int y)
- {
- ans+=tim-mx[x]-sum[x];
- sum[x]+=tim-mx[x]-sum[x];
- for(int i=front[x];i;i=nxt[i])
- if(to[i]!=y)
- {
- sum[to[i]]=sum[x];
- dfs2(to[i],x);
- }
- }
- int main()
- {
- int n,root;
- read(n);
- read(root);
- int u,v,w;
- for(int i=;i<n;++i)
- {
- read(u); read(v); read(w);
- add(u,v,w);
- }
- dfs(root,);
- dfs2(root,);
- cout<<ans;
- }
1060: [ZJOI2007]时态同步
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 3090 Solved: 1155
[Submit][Status][Discuss]
Description
Input
Output
仅包含一个整数V,为小Q最少使用的道具次数
Sample Input
1
1 2 1
1 3 3
Sample Output
HINT
N ≤ 500000,te ≤ 1000000
bzoj千题计划163:bzoj1060: [ZJOI2007]时态同步的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- BZOJ1060: [ZJOI2007]时态同步(树形dp 贪心)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3285 Solved: 1286[Submit][Status][Discuss] Descript ...
- bzoj1060 [ZJOI2007]时态同步
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板 ...
- [BZOJ1060][ZJOI2007]时态同步 树形dp
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...
- bzoj千题计划252:bzoj1095: [ZJOI2007]Hide 捉迷藏
http://www.lydsy.com/JudgeOnline/problem.php?id=1095 点分树+堆 请去看 http://www.cnblogs.com/TheRoadToTheGo ...
- bzoj千题计划245:bzoj1095: [ZJOI2007]Hide 捉迷藏
http://www.lydsy.com/JudgeOnline/problem.php?id=1095 查询最远点对,带修改 显然可以用动态点分治 对于每个点,维护两个堆 堆q1[x] 维护 点分树 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
随机推荐
- HDU 3853 LOOPS 期望dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others)Me ...
- js获取浏览器窗口属性
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- js中的let\var\const
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- cobbler-web 界面技术详解
cobbler-web安装配置过程详解 (1)安装cobbler-web(测试时候,确保物理网络是在内网中进行,在外网会无法访问的哦,cobbler-web的访问入口必须有dhcpd指定的网络保持一致 ...
- 用go实现的一个堆得数据结构
用golang实现的堆,主要提供了两个方法,push和pop及堆的大小,代码如下: package main import ( "errors" "fmt" ) ...
- foo()与@foo()的区别
1.@foo() 是错误控制输出,foo()是正常调用输出. 2.@符号在PHP 中可以忽略错误报告,对于表达式有提示错误的,但有不影响语句执行的,可以在表达式之前加@. 3.可以把@符号放在变量.函 ...
- BZOJ5308 ZJOI2018胖
贝尔福特曼(?)的方式相当于每次将所有与源点直接相连的点的影响区域向两边各扩展一格.显然每个点在过程中最多更新其他点一次且这些点构成一段连续区间.这个东西二分st表查一下就可以了.注意某一轮中两点都更 ...
- java的finally用法
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下. 之前在写爬虫的时候数据 ...
- 【比赛】NOIP2017 总结
一.比赛过程 Day1: 拿到题目后,立即把所有题目都看了一遍,发现没有很虚的期望DP和概率DP,感到很庆幸.然后发现今年的题目顺序好像有点不对,T1是数论,T2像是模拟,这难道是把两天的基础题放到一 ...
- 【BZOJ4025】二分图(线段树分治,并查集)
[BZOJ4025]二分图(线段树分治,并查集) 题面 BZOJ 题解 是一个二分图,等价于不存在奇环. 那么直接线段树分治,用并查集维护到达根节点的距离,只计算就好了. #include<io ...