bzoj1827[usaco2010mar]gather奶牛大集会*

YuanZiming YuanZiming     2022-08-06     314

关键词:

bzoj1827[Usaco2010 Mar]gather 奶牛大集会

题意:

n点树(有边权),找出一个点,使得其它所有点到它的距离和最小。n≤100000。

题解:

类似bzoj1131,但维护深度和改为维护距离和。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <queue>
 5 #define inc(i,j,k) for(int i=j;i<=k;i++)
 6 #define maxn 100010
 7 #define ll long long
 8 using namespace std;
 9 
10 inline int read(){
11     char ch=getchar(); int f=1,x=0;
12     while(ch<0||ch>9){if(ch==-)f=-1; ch=getchar();}
13     while(ch>=0&&ch<=9)x=x*10+ch-0,ch=getchar();
14     return f*x;
15 }
16 struct e{int t; ll w; int n;}es[maxn*2]; int g[maxn],ess;
17 void pe(int f,int t,ll w){es[++ess]=(e){t,w,g[f]}; g[f]=ess;}
18 ll ds[maxn],sz[maxn],fads[maxn],dep[maxn],c[maxn],sum; int n,ans,fa[maxn];
19 void dfs1(int x){
20     sz[x]=c[x]; ds[x]=0;
21     for(int i=g[x];i;i=es[i].n)if(es[i].t!=fa[x]){
22         fa[es[i].t]=x; dep[es[i].t]=dep[x]+es[i].w; dfs1(es[i].t);
23         sz[x]+=sz[es[i].t]; ds[x]+=ds[es[i].t]+sz[es[i].t]*es[i].w;
24     }
25 }
26 void dfs2(int x,ll a,ll b){
27     fads[x]=a+b*(sum-sz[x]); ll sm=fads[x];
28     for(int i=g[x];i;i=es[i].n)if(es[i].t!=fa[x])sm+=ds[es[i].t]+es[i].w*sz[es[i].t];
29     for(int i=g[x];i;i=es[i].n)if(es[i].t!=fa[x])dfs2(es[i].t,sm-(ds[es[i].t]+es[i].w*sz[es[i].t]),es[i].w);
30 }
31 int main(){
32     n=read(); inc(i,1,n)c[i]=read(),sum+=c[i];
33     inc(i,1,n-1){int x=read(),y=read(),z=read(); pe(x,y,z); pe(y,x,z);} dfs1(1); dfs2(1,0,0); 
34     ans=1; inc(i,2,n)if(fads[i]+ds[i]<fads[ans]+ds[ans])ans=i; printf("%lld",fads[ans]+ds[ans]); return 0;
35 }

 

20160821

嘴巴题4「bzoj1827」[usaco2010mar]gather奶牛大集会

1827:[Usaco2010Mar]gather奶牛大集会DescriptionBessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在N(1<=N<=100,000)个农场中的一个,这些农... 查看详情

bzoj1827[usaco2010mar]gather奶牛大集会(树形dp)

 【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1827 【题目大意】  给出一棵有点权和边权的树,  请确定一个点,使得每个点到这个点的距离乘上该点乘积的总和最小。 【题解】  定1为根,我们先计... 查看详情

bzoj1827[usaco2010mar]gather奶牛大集会

题目描述 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在N(1<=N<=100,000)个农场中的一个,这些农场由N-1条道路... 查看详情

bzoj1827洛谷2986[usaco10mar]伟大的奶牛聚集greatcowgather(代码片段)

【题解】  很容易想到暴力做法,枚举每个点,然后对于每个点O(N)遍历整棵树计算答案。这样整个效率是O(N^2)的,显然不行。  我们考虑如果已知当前某个点的答案,如何快速计算它的儿子的答案。  显然选择它的儿子... 查看详情

bzoj_1828_[usaco2010mar]balloc农场分配_线段树

BZOJ_1828_[Usaco2010Mar]balloc农场分配_线段树DescriptionInput第1行:两个用空格隔开的整数:N和M*第2行到N+1行:第i+1行表示一个整数C_i*第N+2到N+M+1行:第i+N+1行表示2个整数A_i和B_iOutput*第一行:一个整数表示最多能够被满足的要求数SampleI... 查看详情

[bzoj1637][usaco2007mar]balancedlineup

1637:[Usaco2007Mar]BalancedLineupTimeLimit:5Sec  MemoryLimit:64MBSubmit:693  Solved:460[Submit][Status][Discuss]DescriptionFarmerJohn决定给他的奶牛们照一张合影,他让N(1≤N≤50,000)头奶牛站成一条直线,每头牛都有它的坐 查看详情

bzoj1637:[usaco2007mar]balancedlineup

1637:[Usaco2007Mar]BalancedLineupTimeLimit: 5Sec  MemoryLimit: 64MBDescriptionFarmerJohn决定给他的奶牛们照一张合影,他让N(1≤N≤50,000)头奶牛站成一条直线,每头牛都有它的坐标(范围:0..1,000,000,000)和种族(0或1)。一直以来FarmerJohn 查看详情

[bzoj]1639:[usaco2007mar]monthlyexpense月度开支

1639:[Usaco2007Mar]MonthlyExpense月度开支TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 1077  Solved: 533[Submit][Status][Discuss]DescriptionFarmerJohn是一个令人惊讶的会计学天才,他已经明 查看详情

[bzoj]1657:[usaco2006mar]mooo奶牛的歌声

1657:[Usaco2006Mar]Mooo奶牛的歌声TimeLimit:5Sec  MemoryLimit:64MBSubmit:858  Solved:603[Submit][Status][Discuss]DescriptionFarmerJohn‘sN(1<=N<=50,000)cowsarestandinginaverystraigh 查看详情

[bzoj1657][usaco2006mar]mooo奶牛的歌声

 1657:[Usaco2006Mar]Mooo奶牛的歌声TimeLimit:5Sec  MemoryLimit:64MBSubmit:863  Solved:607[Submit][Status][Discuss]DescriptionFarmerJohn‘sN(1<=N<=50,000)cowsarestandinginaverys 查看详情

bzoj1597[usaco2008mar]土地购买

[Usaco2008Mar]土地购买TimeLimit:10SecMemoryLimit:162MBDescription农夫John准备扩大他的农场,他正在考虑\(N(1<=N<=50,000)\)块长方形的土地.每块土地的长宽满足\((1<=宽<=1,000,000;1<=长<=1,000,000)\).每块土地的价格是它的面积,但FJ可以同... 查看详情

bzoj1637[usaco2007mar]balancedlineup*

bzoj1637[Usaco2007Mar]BalancedLineup题意:n头牛,第i头牛位置为ai,种族为bi(只能为0,1),求一个区间(按数轴位置),使得区间两端牛距离差最大且两种种族牛数相等。n≤50000。题解:按位置排序。然后利用前缀和sum[i][0]-sum[j-1][0]... 查看详情

[bzoj1617][usaco2008mar]rivercrossing渡河问题

1617:[Usaco2008Mar]RiverCrossing渡河问题TimeLimit:5Sec  MemoryLimit:64MBSubmit:1102  Solved:801[Submit][Status][Discuss]DescriptionFarmerJohn以及他的N(1<=N<=2,500)头奶牛打算过一条河,但他们所有的渡河工 查看详情

bzoj1597:[usaco2008mar]土地购买

BZOJ1597:[Usaco2008Mar]土地购买Description农夫John准备扩大他的农场,他正在考虑N(1<=N<=50,000)块长方形的土地.每块土地的长宽满足(1<=宽<=1,000,000;1<=长<=1,000,000).每块土地的价格是它的面积,但FJ可以同时购买多快土地.这些土... 查看详情

bzoj1703:[usaco2007mar]rankingthecows奶牛排名传递闭包,bitset

1703:[Usaco2007Mar]RankingtheCows奶牛排名TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 323  Solved: 238[Submit][Status][Discuss]Description    农夫约翰有 查看详情

[bzoj3399][usaco2009mar]sandcastle城堡(排序)

3399:[Usaco2009Mar]SandCastle城堡TimeLimit: 3Sec  MemoryLimit: 128MBSubmit: 79  Solved: 66[Submit][Status][Discuss]Description约翰用沙子建了一座城堡.正如所有城堡的城墙,这城墙也有许多枪眼,两个相邻 查看详情

[bzoj1639][usaco2007mar]monthlyexpense月度开支

1639:[Usaco2007Mar]MonthlyExpense月度开支TimeLimit:5Sec  MemoryLimit:64MBSubmit:1069  Solved:530[Submit][Status][Discuss]DescriptionFarmerJohn是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每 查看详情

[bzoj]1657:[usaco2006mar]mooo奶牛的歌声

1657:[Usaco2006Mar]Mooo奶牛的歌声TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 867  Solved: 610[Submit][Status][Discuss]DescriptionFarmerJohn‘sN(1<=N<=50,000)cowsa 查看详情