bzoj3727 (这真的是树形DP?)
来源:互联网 发布:屏蔽一段ip的js代码 编辑:程序博客网 时间:2024/06/01 12:02
Description
吉丽YY了一道神题,题面是这样的:
“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人。假设在i结点举行会议,所有人都从原住址沿着最短路径来到i结点,行走的总路程为b[i]。输出所有b[i]。”
吉丽已经造好了数据,但熊孩子把输入文件中所有a[i]给删掉了。你能帮他恢复吗?
Input
第一行一个整数n(2<=n<=300000)。
接下来n-1行,每行两个整数x,y,表示x和y之间有连边。
接下来一行由空格隔开的n个整数bi。
Output
输出一行由空格隔开的n个整数a[i]。
如果你觉得有多组解就任意输出其中一组。
Sample Input
2
1 2
17 31
Sample Output
31 17
我、不、是、很、相信、这是dp?
TJ:
我们让
变一变形
右边可以求出来并且累加,所以我们换成
然后你发现其实
所以
根据“变一变形”那个公式我们可以求出所有的
然后就可以求粗来了。
#include<cstring>#include<cstdio>using namespace std;typedef long long LL;const int N=300000+50;struct E {int v,nt;} e[N<<1];int n,cnt,tot,h[N],fa[N],id[N];LL b[N],sz[N];template <class T> void read(T &x) { x=0;int f=1;char ch=getchar(); for(;ch<'0'||ch>'9';) {if(ch=='-') f=-1;ch=getchar();} for(;ch>='0'&&ch<='9';) x=x*10+ch-'0',ch=getchar(); x*=f;}template <class T> void write(T x) { int num=0;char ch[20]; if(x<0) putchar('-'),x=-x; do ch[++num]=x%10+'0',x/=10; while(x); for(;num;) putchar(ch[num--]);}void add(int u,int v) {e[++cnt]=(E){v,h[u]};h[u]=cnt;}void dfs(int x) { id[++tot]=x; for(int v,i=h[x];i;i=e[i].nt) if((v=e[i].v)!=fa[x]) fa[v]=x,dfs(v);}int main() { int i,u,v; for(read(n),i=1;i<n;i++) read(u),read(v),add(u,v),add(v,u); for(i=1;i<=n;i++) read(b[i]); for(dfs(1),i=2;i<=n;i++) sz[1]+=b[fa[i]]-b[i]; for(sz[1]=(b[1]*2-sz[1])/(n-1),i=2;i<=n;i++) sz[i]=b[fa[i]]-b[i]+sz[1]>>1; for(i=2;i<=n;i++) sz[fa[id[i]]]-=sz[id[i]]; for(i=1;i<n;i++) write(sz[i]),putchar(' '); write(sz[n]),putchar('\n'); return 0;}
阅读全文
0 0
- bzoj3727 (这真的是树形DP?)
- POJ 2342 Anniversary party (听说这是树形DP)
- FJUTOJ 校赛J 第十集 原来这一切都是真的 (树形概率dp)
- 【dp】树形dp真好玩,hdu6035多校第一场的 colorful tree
- 这真的是爱?
- 哗啦啦村的扩建(树形DP)
- 树形DP的一些理解(一)
- 树的重心(树形DP)
- 没有上司的晚会(树形DP)
- Godfather (树形dp,树的重心)
- Godfather (树形dp + 树的重心)
- 奇奇怪怪的树形dp
- zoj cut the tree(树形dp,小细节真的很多)
- poj1155 (树形dp)
- poj1947(树形dp)
- hdu2196Computer(树形dp)
- poj3107(树形dp)
- CodeForces337D(树形DP)
- Android通过goToSleep休眠后,CountDownTimer遇到的问题
- Java环境变量的配置详解(配图)
- linux centos6.5下的mysql重置root密码的问题
- python map()
- 基于用户的协同过滤推荐模型
- bzoj3727 (这真的是树形DP?)
- 通过NSString和NSData将数据写入文件
- 基于Hadoop的数据压缩与解压缩实例
- Eloquent JavaScript 笔记 十: Modules
- UVa1368
- 一分钟了解“#include <iomanip>”
- 关于wireshark抓包的那点事儿
- class path resource [applicationContext.xml] cannot be opened because it does not exist
- Android性能优化小结