BZOJ 1060 ZJOI2007 时态同步 树形DP
来源:互联网 发布:道路工程量计算软件 编辑:程序博客网 时间:2024/05/10 05:10
题目大意:给定一棵有根树,每次操作可以使某条边边权+1,求最少的操作次数,使根节点到每一个叶节点的距离都相等
树形DP
容易发现操作对于越靠近根节点的边进行越有利
首先对于每个节点扫一遍记录这个节点到子树中所有叶节点的最大距离 然后枚举每一个儿子 将该节点和该儿子之间的边权补至最大距离相等
对于每个节点都如此做 最后就能保证根节点到每个叶节点的距离都相等
数据有误坑死人……
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 500500using namespace std;struct abcd{int to,f,next;}table[M<<1];int head[M],tot;int n,root;long long ans;int max_distance[M];//由于标程有误没开long long,因此这个变量如果开成long long的话最后3个点会WA掉, void Add(int x,int y,int z){table[++tot].to=y;table[tot].f=z;table[tot].next=head[x];head[x]=tot;}void DFS(int x,int from){int i;for(i=head[x];i;i=table[i].next){if(table[i].to==from)continue;DFS(table[i].to,x);max_distance[x]=max(max_distance[x],max_distance[table[i].to]+table[i].f);}for(i=head[x];i;i=table[i].next){if(table[i].to==from)continue;ans+=max_distance[x]-table[i].f-max_distance[table[i].to];}}int main(){int i,x,y,z;cin>>n>>root;for(i=1;i<n;i++)scanf("%d%d%d",&x,&y,&z),Add(x,y,z),Add(y,x,z);DFS(root,0);cout<<ans<<endl;}
0 0
- BZOJ 1060 ZJOI2007 时态同步 树形DP
- BZOJ 1060: [ZJOI2007]时态同步 树形DP
- bzoj 1060: [ZJOI2007]时态同步 树形dp
- bzoj 1060: [ZJOI2007]时态同步(树形DP)
- 【BZOJ】1060: [ZJOI2007]时态同步
- BZOJ 1060: [ZJOI2007]时态同步
- [BZOJ1060][ZJOI2007]时态同步(树形dp)
- 【bzoj1060】【ZJOI2007】时态同步(树形dp)
- [bzoj1060][ZJOI2007]时态同步 树形DP
- [ZJOI2007]时态同步(树形DP+DFS)
- 【BZOJ1060】时态同步(ZJOI2007)-树形DP
- bzoj 1060 [ZJOI2007] 时态同步 题解
- BZOJ 1060 ZJOI 2007 时态同步 树形DP
- bzoj1060 [ZJOI2007]时态同步 [树形dp][贪心…]
- LuoguP1131[ZJOI2007] 时态同步 解题报告【树形DP(?)】
- 1060: [ZJOI2007]时态同步
- [bzoj1060][ZJOI2007]时态同步(树上dp)
- BZOJ 1060 时态同步
- centOS6.5免秘钥登陆
- 云计算服务真的是扼杀ERP的真凶吗
- Eclipse中快速开发JNI,一键生成C头文件.h
- h5+css3最简单的图片飞入效果
- 第十四周项目六 读程序 (1)
- BZOJ 1060 ZJOI2007 时态同步 树形DP
- 【Architecture】EDA 和 SOA 的融合以及实践 在金融行业的应用
- 玛雅日历转换
- qt4中如何区分不同系统(mac, windows, linux)
- 北风网荣获教育机构年度评选两项大奖
- 为什么对象应该是不可变的
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- 第十四周项目六 读程序 (2)
- Oracle等待事件以及解决方案