商品中心
Time Limit: 2000 MS Memory Limit: 32768 K
Total Submit: 7(5 users) Total Accepted: 3(3 users) Rating:  Special Judge: No
Description

有N个城镇(编号从1到N)城镇之间有一些双向道路相连,并且保证任意两个城镇之间只有一条唯一的路线。

每一条道路都有一个运送商品的容量。

假设城镇i到城镇j有一条路线,我们定义城镇i向城镇j运送商品的容量等于路线中道路运送商品的容量的最小值。

现在想建一个商品中心,并且要求商品中心到其他所有的城镇运送商品容量和最大。

Input
有多组测试数据
第一行是一个整数N(1<=N<=200000)
接下来N-1行每行三个整数a,b,c表明城镇a和城镇b之间道路运送商品容量为c。
Output
对于每组测试数据,输出一个整数商品中心到其他所有的城镇运送商品容量和最大值。
Sample Input
4
1 2 2
2 4 1
2 3 1
4
1 2 1
2 4 1
2 3 1
Sample Output
4
3

思路:

(一开始以为是树型Dp.怎么写都感觉复杂度爆炸,后来感觉贪心可行,就走的贪心路,可能树型Dp可做,但是窝不会呀)

现在有一个最小权值作为约束,那么我们不妨先将所有边按照从大到小排序。

那么当前边的权值w,就是联通两个联通块的必经最小权值边。

那么对于当前这条边连接的两个联通块X.Y.要么我们让X中的一个点作为根,跑到Y中,使得这条边的贡献度为w*Y集合中点的个数,或者我们让Y中的一个点作为根,跑到X中,使得这条边的贡献度为w*X集合中点的个数。

无论我们怎样选,最终都会使得两个集合合并在一起。

那么我们肯定贪心去做,对于集合X.其中肯定有一个点作为根,已经跑遍了X中的其他所有点,其总权值和设定为ans【X】.对于结婚Y.也是肯定有一个点作为跟,已经跑遍了Y中的所有点,其总权值和设定为ans【Y】.根据贪心道理来讲,此时的X是局部贪心,Y也是局部贪心,那么两个局部贪心比较大小是可以得到整体贪心的。

那么我们连接两个点合并为同一连通块的时候,比较ans【X】+w*Y集合中点的个数和ans【Y】+w*X集合中点的个数的大小,让大的那边的根作为合并之后的集合的总根,达到当前局部最优贪心,从而不断的连接两个联通块,来得到整体的最优贪心。

Ac代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{int x,y,w;
}a[350000];
int f[350000];
int sum[350000];
int ans[350000];
int cmp(node a,node b)
{return a.w>b.w;
}
int find(int a)
{int r=a;while(f[r]!=r)r=f[r];int i=a;int j;while(i!=r){j=f[i];f[i]=r;i=j;}return r;
}
int main()
{int n;while(~scanf("%d",&n)){for(int i=1;i<=n;i++)f[i]=i,sum[i]=1,ans[i]=0;for(int i=0;i<n-1;i++){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);}sort(a,a+n-1,cmp);for(int i=0;i<n-1;i++){int x=a[i].x;int y=a[i].y;int xx=find(x);int yy=find(y);int X=sum[find(x)];int Y=sum[find(y)];if(ans[yy]+X*a[i].w>ans[xx]+Y*a[i].w){f[xx]=yy;sum[yy]+=sum[xx];ans[yy]+=X*a[i].w;}else{f[yy]=xx;sum[xx]+=sum[yy];ans[xx]+=Y*a[i].w;}}int output=0;for(int i=1;i<=n;i++){output=max(output,ans[i]);}printf("%d\n",output);}
}

Hrbust 1849 商品中心【贪心+思维+并查集】好题!好题!相关推荐

  1. HRBUST 1849 商品中心

    vjudge 智商掉线... 可以发现一条边能贡献其他点当且仅当两点路径上这个边权值最小,所以如果按照边权从大到小加边,每加一条边就会合并两个联通块,那么一个联通块内的点到另一个联通块的点的权值就都是 ...

  2. 中石油训练赛 - 奎奎画画(思维+并查集+离线处理)

    题目描述 "为你写诗,为你静止,为你做不可能的事",爱情是一种怪事,它让奎奎开始学习画画.奎奎认为一张画的艺术价值等于画上的白色联通块个数(当一个格子和它上下左右四个方向上的某个相 ...

  3. poj 1456 Supermarket (贪心, 并查集)

    链接: http://poj.org/problem?id=1456 题目: Description A supermarket has a set Prod of products on sale. ...

  4. Harmonious Graph CodeForces - 1253D(思维+并查集)

    You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...

  5. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

  6. 51nod 1535 深海探险【思维+并查集】

    1535 深海探险 题目来源:  CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40  难度:4级算法题 很久很久以前的一天,一位美男子来到海边,海上狂风大作.美男 ...

  7. Codeforces Round #218 (Div. 2) D. Vessels(思维 并查集)

    题意:从上到下有n个杯子,编号从1到n.每个杯子有一定体积v[i]. 两种操作:1 x y, 向x水杯倒y水; 2 x, 询问x水杯有多少水. (水杯水溢出会往下流) n,q <= 2e5 思路 ...

  8. 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数

    problem L2-024 部落 (25分) 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多 ...

  9. 【代码源 Div1 - 109】#454. Minimum Or Spanning Tree(最小生成树,边权按位或,贪心,并查集) CF1624G

    problem solution 题意:生成树的代价为他所有边的边权按位或得到的值,求最小生成树 贪心,一般来说,求 按位与 和 按位或 的最大值都可以从高往低逐位的贪心处理 对于当前位 b 而言,若 ...

最新文章

  1. php 魔术方法 说明
  2. GPS NMEA-0183协议详解
  3. mobilenetv2_unet
  4. c++求矩阵的秩_一篇文章搞定矩阵相关概念及意义通俗解释汇总
  5. Paper:《Adam: A Method for Stochastic Optimization》的翻译与解读
  6. flutter中list相关操作汇总(有这一篇就够啦)
  7. ITK:使用二项式内核模糊图像
  8. 容器源码分析之PriorityQueue(十)
  9. 使用jquery图表插件jqplot之折线图
  10. c语言EOF0x99,C语言选择题99道.doc
  11. ORACLE 等待事件
  12. struts2上传图片到mysql数据库 实例_Struts2上传图片到Mysql数据库中,以及显示到页面...
  13. 物权法全文内容有哪些呢-广告外链_SEO优化的站外优化工作有哪些?
  14. 项目中的门禁管理者贾维斯———关于 Shiro 框架的 基本使用和基础配置,以及工作流程的生动解释
  15. 公告栏文本横向循环滚动
  16. 工业互联网:7  项目生命周期管理(1)
  17. 熊绎:我看软件工程师的职业规划(转载)
  18. python培训+价格上海
  19. LTE学习笔记--LTE无线连接过程--UE Attach过程和Detach过程
  20. ajax检测用户名重复无效,用ajax实现检测注册用户名是否重复的完整例子

热门文章

  1. linux的图形界面的管理
  2. CAS解决单点登录SSO
  3. 程序员群嘲红芯浏览器:注释过度很业余,创新混淆视听
  4. 百度网盘提速法,不用插件,不用安装脚本
  5. PandoraBox多拨
  6. 2021赤峰市地区高考成绩排名查询,2021年赤峰高考状元是谁分数多少分,历年赤峰高考状元名单...
  7. INFLUXDB-influxDB一些查询语法你必须知道
  8. Linux服务器百万并发实现与问题排查
  9. 逻辑回归LogisticRegression
  10. 常见错误:无效的文件dsn_DSN1COPY错误-SP映射页面错误