ZOJ Problem Set - 3659 Conquer a New Region
2012-10-17 15:50
176 查看
The 2012 ACM-ICPC Asia Changchun Regional Contest-E
题目大意,给出一棵树,定义C(i,j)表示点i到点j路径上的最小边。然后希望确定一个点P,是的最大化sigma{C(p,i) 1<=i<=i }。
假设拿出一条最小边,其长度为Len,一定可以把数分割成两个块L,和R,假设我们能解决相同的子问题及求的L和R中的最大值分别为L_value,R_value,那么
这个问题中的最大值就是 max{L_value+R中的节点数*Len,R_value+L中的节点数*Len}。这样可以看成一个递归问题。
然后从去边改成加边,初始时n个点,按边的大小从大到小依次放入,然后统计出新的形成的块中的最大的点的值。这样可以用并查集来维护。只要把最大的值的点
设为并查集的root即可。
题目大意,给出一棵树,定义C(i,j)表示点i到点j路径上的最小边。然后希望确定一个点P,是的最大化sigma{C(p,i) 1<=i<=i }。
假设拿出一条最小边,其长度为Len,一定可以把数分割成两个块L,和R,假设我们能解决相同的子问题及求的L和R中的最大值分别为L_value,R_value,那么
这个问题中的最大值就是 max{L_value+R中的节点数*Len,R_value+L中的节点数*Len}。这样可以看成一个递归问题。
然后从去边改成加边,初始时n个点,按边的大小从大到小依次放入,然后统计出新的形成的块中的最大的点的值。这样可以用并查集来维护。只要把最大的值的点
设为并查集的root即可。
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #define MAXN 300000 using namespace std; typedef long long LL; struct City{ LL father, nodeCnt, value; }f[MAXN]; struct Edge{ int v,u; LL Len; }e[MAXN]; int n; bool cmp(Edge a, Edge b){ return (a.Len < b.Len); } int find(int x){ return (x==f[x].father? x:f[x].father = find(f[x].father)); } int main() { while (cin>>n){ for (int i=1;i<n;++i){ scanf("%d%d%lld",&e[i].v,&e[i].u,&e[i].Len); } sort(e+1,e+n,cmp); for (int i=1;i<=n;++i) f[i].father = i,f[i].value = 0,f[i].nodeCnt=1; for (int i=n-1;i>=1;--i){ int _v = find(e[i].v); int _u = find(e[i].u); if (f[_v].value+f[_u].nodeCnt*e[i].Len<f[_u].value+f[_v].nodeCnt*e[i].Len) swap(_v,_u); f[_u].father = _v; f[_v].nodeCnt +=f[_u].nodeCnt; f[_v].value +=f[_u].nodeCnt*e[i].Len; } cout<< f[find(1)].value << endl; } return 0; }
相关文章推荐
- zoj 3659 Conquer a New Region
- zoj 3659 Conquer a New Region
- ZOJ 3659 Conquer a New Region
- ZOJ 3659 Conquer a New Region(并查集)
- zoj 3659 Conquer a New Region(并查集)
- ZOJ 3659 Conquer a New Region
- zoj 3659 Conquer a New Region
- ZOJ 3659 Conquer a New Region(12年长春site E)
- ZOJ 3659 & HDU 4424 Conquer a New Region (并查集)
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- ZOJ 3659 &amp; HDU 4424 Conquer a New Region (并查集)
- ZOJ3659——Conquer a New Region
- ZOJ 3659 Conquer a New Region【长春区域赛E】
- zoj 3659 Conquer a New Region 并查集+贪心
- zoj 3659 Conquer a New Region【并查集】【2012长春现场赛】
- ZOJ 3659 Conquer a New Region(路径压缩)
- zoj 3659 Conquer a New Region
- ZOJ 3659 Conquer a New Region 并查集
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- zoj 3659 Conquer a New Region (经典并查集)