bzoj3727: PA2014 Final Zadanie
我真是SB之神呢这么SB的题都不会
肯定是先无脑正向思考,罗列下关系式:
b[1]=∑a[i]*dep[i]=∑tot[i] (i!=1)
b[i]=b[fa]-tot[i]+(tot[1]-tot[i])
a[i]=tot[i]-∑tot[son]
画一下第二个,就变成2*tot[i]-tot[1]=b[fa]-b[i],那么i取遍2~n就有 2*∑tot[i](i!=1) - (n-1)*tot[1] = ∑b[fa]-b[i]
后面那个是可以算的,∑tot[i](i!=1)就是b1,那tot[1]就搞出来了
然后把tot[1]代入第二个柿子,tot就全搞出来了
然后再代入第三个,a也完了
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int _=1e2;
const int maxn=*1e5+_; struct node
{
int x,y,next;
}a[*maxn];int len,last[maxn];
void ins(int x,int y)
{
len++;
a[len].x=x;a[len].y=y;
a[len].next=last[x];last[x]=len;
}
int fa[maxn];
void dfs(int x)
{
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(fa[x]!=y)
{
fa[y]=x;
dfs(y);
}
}
}
LL A[maxn],B[maxn],tot[maxn];
void dfs2(int x)
{
A[x]=tot[x];
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(fa[x]!=y)
{
A[x]-=tot[y];
dfs2(y);
}
}
} int main()
{
int n,x,y;
scanf("%d",&n); len=;
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
ins(x,y),ins(y,x);
}
for(int i=;i<=n;i++)scanf("%lld",&B[i]);
dfs(); LL s=;
for(int i=;i<=n;i++)s+=B[fa[i]]-B[i];
tot[]=(*B[]-s)/LL(n-);
for(int i=;i<=n;i++)
tot[i]=(B[fa[i]]-B[i]+tot[])/;
dfs2();
for(int i=;i<n;i++)printf("%lld ",A[i]);
printf("%lld\n",A[n]); return ;
}
bzoj3727: PA2014 Final Zadanie的更多相关文章
- 【BZOJ3727】PA2014 Final Zadanie 树形DP
[BZOJ3727]PA2014 Final Zadanie Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行 ...
- 【BZOJ 3727】 3727: PA2014 Final Zadanie (递推)
3727: PA2014 Final Zadanie Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 279 Solved: 121 Descript ...
- BZOJ 3727 PA2014 Final Zadanie 树形DP
题目大意:给定一棵树,令一个点到全部点的距离与点权的乘积之和为b[i].求每一个点的权值a[i] 首先假设给定a[i]我们能够非常轻松的求出b[i] 可是反过来怎么搞?高斯消元?30W? 考虑已知a[ ...
- BZOJ 3721: PA2014 Final Bazarek
3721: PA2014 Final Bazarek Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 645 Solved: 261[Submit][ ...
- bzoj 3722: PA2014 Final Budowa
3722: PA2014 Final Budowa Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 303 Solved: 108[Submit][St ...
- 【BZOJ3721】PA2014 Final Bazarek 贪心
[BZOJ3721]PA2014 Final Bazarek Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n ...
- bzoj3721 [PA2014 Final] Bazarek
Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数 ...
- 【贪心】bzoj3721 PA2014 Final Bazarek
考虑不限制奇偶的情况,那就是直接排序取前k个的和. 加上奇偶限制:若排序后的前k个的和是偶数,则“显然地”:将其中的最小的奇数替换成未被选择的数中最大的偶数 或者 将其中的最小的偶数替换成未被选择的数 ...
- bzoj 3727: Final Zadanie 思维题
题目: Description 吉丽YY了一道神题,题面是这样的: "一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行会议,所有人都从原住址沿着最短路径来到i结 ...
随机推荐
- 【bzoj1710】[Usaco2007 Open]Cheappal 廉价回文
[bzoj1710][Usaco2007 Open]Cheappal 廉价回文 Description 为了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过 ...
- cf670E Correct Bracket Sequence Editor
Recently Polycarp started to develop a text editor that works only with correct bracket sequences (a ...
- idea16使用maven命令clean、编译、打包jar或者war
项目环境:idea16+jdk1.7+maven-3.3.9 项目说明:编写简单的java类,使用maven命令生成jar包,然后执行------->"java -classpath ...
- 远程管理 KVM 虚机
上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...
- msp430项目编程50
msp430综合项目---gsm无线采集传输平台系统50 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- Redis数据结构之字典
Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对. 一.字典结构定义1. 哈希表节点结构定义: 2. 哈希表结构定义: 3. 字典 ...
- npm start 修改启动端口的不同方式
antd的启动配置文件基于package.json文件,配合roadhog使用时,启动配置是: "scripts": { "start": "road ...
- hg下拉和上传代码
1.从代码仓库克隆源代码:$ mkdir bzrobot_ws$ cd bzrobot_ws$ hg clone http://192.168.15.88/hg/bzrobot_src src$ ca ...
- Log4J使用详情
一 .Log4J使用详情 Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以 ...
- zabbix之Low-level discovery(自动发现)
功能: 自动发现挂载点并自动监控 自动发现网卡并自动监控 创建自动发现挂载点并监控 功能 假如要在monitor_linux模板中创建自动发现挂载点的功能 配置-->模板-->选择模板-- ...