【BZOJ-1060】时态同步 树形DP (DFS爆搜)
1060: [ZJOI2007]时态同步
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2101 Solved: 595
[Submit][Status][Discuss]
Description
Input
Output
仅包含一个整数V,为小Q最少使用的道具次数
Sample Input
1
1 2 1
1 3 3
Sample Output
HINT
N ≤ 500000,te ≤ 1000000
Source
Solution
读懂题之后,直接就知道了咋做了吧...
找子树的最大路径,其余的全部变成这个值,即可,所以dp[i]存储以i为根的子树的最大...
DFS一遍直接出答案....
Code
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int read()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
#define maxn 500010
#define maxm 2000010
int N,S,dp[maxn]; long long ans=;
struct EdgeNode{int next,from,to,ti;}edge[maxm];
int head[maxn],cnt=;
void add(int u,int v,int w)
{
cnt++;
edge[cnt].to=v; edge[cnt].from=u; edge[cnt].ti=w; edge[cnt].next=head[u]; head[u]=cnt;
}
void insert(int u,int v,int w) {add(u,v,w); add(v,u,w);}
void DFS(int now,int last)
{
for (int i=head[now]; i; i=edge[i].next)
if (edge[i].to!=last)
DFS(edge[i].to,now),dp[now]=max(dp[edge[i].to]+edge[i].ti,dp[now]);
for (int i=head[now]; i; i=edge[i].next)
if (edge[i].to!=last) ans+=(dp[now]-dp[edge[i].to]-edge[i].ti);
}
int main()
{
N=read(); S=read();
for (int a,b,t,i=; i<=N-; i++)
a=read(),b=read(),t=read(),insert(a,b,t);
DFS(S,);
printf("%lld\n",ans);
return ;
}
这种题叫树形DP真是有愧于树形DP
【BZOJ-1060】时态同步 树形DP (DFS爆搜)的更多相关文章
- BZOJ 1060: [ZJOI2007]时态同步( 树形dp )
坑爹...数据是错的..详见discuss http://www.lydsy.com/JudgeOnline/wttl/wttl.php?pid=1060 先求根到叶子的距离最大值x, 然后把所有叶 ...
- [BZOJ1060][ZJOI2007]时态同步 树形dp
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...
- 【BZOJ1060】[ZJOI2007]时态同步 树形DP
[BZOJ1060][ZJOI2007]时态同步 Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路 ...
- [ZJOI2007]时态同步 (树形DP)
题目描述 小 Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字 1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个 ...
- BZOJ1060: [ZJOI2007]时态同步(树形dp 贪心)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3285 Solved: 1286[Submit][Status][Discuss] Descript ...
- 洛谷 P1131 [ ZJOI 2007 ] 时态同步 —— 树形DP
题目:https://www.luogu.org/problemnew/show/P1131 记录 x 子树内同步的时间 f[x],同步所需代价 g[x]: 直接转移即可,让该儿子子树与其它儿子同步, ...
- LG1131 「ZJOI2007」时态同步 树形DP
问题描述 LG1131 题解 正难则反,把从一个点出发到叶子结点看做从叶子结点走到那个点. DP方程很显然. \(\mathrm{Code}\) #include<bits/stdc++.h&g ...
- BZOJ 1060 时态同步
贪心. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- Luogu P1131 [ZJOI2007]时态同步 树形DP
要自下向上调整,尽可能用一个道具修改多个: 搜的时候记录叶节点的最大深度,减一下就好了. #include<cstdio> #include<iostream> #includ ...
随机推荐
- VFS分析(二)基本数据结构(持续更新)
nameidata /mnt/dir1/dir2/ nameidata结构体是一个临时的结构体, 目标是为了找到最后的dentry.
- 设置word里的代码格式,使之有底纹的效果
目录 1 实现效果: 1 2 怎么才能在word里实现这样的显示? 1 如何设置word里的代码格式,使之有底纹的效果 2 实现效果: 怎么才能在word里实现这 ...
- md5的C++实现
一.原理 前一阵子,想知道md5的原理查了一下资料,说得基本都一样,最后让我看懂的是这两个链接: http://blog.csdn.net/qf_study/article/details/26309 ...
- java:如何用代码控制H2 Database启动
1.纯手动start/stop package com.cnblogs.yjmyzz.h2; import java.sql.Connection; import java.sql.DriverMan ...
- lecture6-mini批量梯度训练及三个加速的方法
Hinton的第6课,这一课中最后的那个rmsprop,关于它的资料,相对较少,差不多除了Hinton提出,没论文的样子,各位大大可以在这上面研究研究啊. 一.mini-批量梯度下降概述 这部分将介绍 ...
- javascript 位运算
位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...
- byte[] 转字符串 中文乱码
闲来无事,写了一个UWP的UDP/TCP小Demo,网上找了个网络调试助手,就兴冲冲的开始玩耍 结果“鸡同鸭讲”: 讲英文的时候大家都是abc,hello man!how are you? 讲中文的时 ...
- DLL编写教程
本文对通用的DLL技术做了一个总结,并提供了源代码打包下载,下载地址为: http://www.blogjava.net/Files/wxb_nudt/DLL_SRC.rar DLL的优点 简单的 ...
- UEFI与MBR区别
EFI与MBR启动的区别 大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘 ,更快速的启动win ...
- SpringMVC学习--功能完善
简介 在基本的项目中,无非就是基本的增删改查,前面我们已经实现了一个简单的查询功能,现在来实现增删改功能,来了解实际开发中的运用,以修改功能为例,因为修改功能基本覆盖了增加和删除的运用. 前面我们实现 ...