2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic(Kruskal思想)
2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic
题意:有一张图,第i个点被占领需要ai个兵,而每个兵传送至该点需要bi的费用。占领第i条边需要其两端点的兵数之和大等于ci。对于已占领的点或边可以免费通行。因此兵达到一个点的手段有传送和沿路走。图上的兵可以在已占领的点、边随意调度。
求占领所有点的最小花费。
思路:将边按ci进行升序排列,对于每条边两端点所在的连通块进行合并,合并细节见代码。这里有一点值得思考:当你想打通当前这条边时,由于排了序,你总可以默认之前那些ci小的边已打通(因为兵可以调度)。因此,我们需要用并查集维护连通块,以及每个连通块中最小的传送单价,最大的单点兵需求量,来更新花费。
#include<iostream>
#include<cstdio>
#include<algorithm>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<ll,pair<int,int> > P;
const int maxn=3e5+10;
P edge[maxn];
int fa[maxn];
ll a[maxn],b[maxn],cost[maxn];
void init(int n)
{
  for (int i=1;i<=n;++i)
  {
  	fa[i]=i;
	cost[i]=a[i]*b[i];
  }
}
int find(int x)
{
  return fa[x]==x?x:fa[x]=find(fa[x]);
}
void unio(int x,int y,ll c)
{
  int fx=find(x),fy=find(y);
  if (fx==fy)
  	return;
  fa[fx]=fy;
  a[fy]=max(c,max(a[fy],a[fx]));
  b[fy]=min(b[fy],b[fx]);
  cost[fy]=min(cost[fy]+cost[fx],a[fy]*b[fy]);
}
int main()
{
  int n,m;
  scanf("%d%d",&n,&m);
  for (int i=1;i<=n;++i)
  	scanf("%lld%lld",&a[i],&b[i]);
  for (int i=0;i<m;++i)
  	scanf("%d%d%lld",&edge[i].se.fi,&edge[i].se.se,&edge[i].fi);
  sort(edge,edge+m);
  init(n);
  for (int i=0;i<m;++i)
  {
  	int u=edge[i].se.fi,v=edge[i].se.se,c=edge[i].fi;
  	unio(u,v,c);
  }
  ll ans=0;
  for (int i=1;i<=n;++i)
	if (fa[i]==i)
	  ans+=cost[i];
  printf("%lld",ans);
  return 0;
}
												
											2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic(Kruskal思想)的更多相关文章
- 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest
		
A. Altitude 从小到大加入每个数,用set查找前驱和后继即可. 时间复杂度$O(n\log n)$. #include <bits/stdc++.h> using namespa ...
 - 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力
		
Problem K. KMC Attacks 题目连接: http://codeforces.com/gym/100714 Description Warrant VI is a remote pla ...
 - 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉
		
Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...
 - 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest E. Equal Digits
		
E. Equal Digits time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
 - 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest A. Advanced 2048
		
A. Advanced 2048 time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
 - [Gym]2008-2009 ACM-ICPC, NEERC, Moscow Subregional Contest
		
比赛链接:http://codeforces.com/gym/100861 A模拟,注意两个特殊的缩写. #include <bits/stdc++.h> using namespace ...
 - 2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest
		
A. Advertising Strategy 最优策略一定是第一天用$y$元,最后一天再用$x-y$元补满. 枚举所有可能的$y$,然后模拟即可,天数为$O(\log n)$级别. 时间复杂度$O( ...
 - 2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest J - Jealousy
		
题意:有n张照片,每张照片上有一些妹子,要按照片顺序给妹纸安排男朋友,如果妹纸i安排的男朋友之前有女朋友,那么费用+wi,求总费用最小,和输出路径 题解:费用流,先把照片天数建点i连i+1,流量k(最 ...
 - 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题
		
Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...
 
随机推荐
- k8s认证及serviceAccount、userAccount
			
1.概述 用kubectl向apiserver发起的命令,采用的是http方式,K8s支持多版本并存. kubectl的认证信息存储在~/.kube/config,所以用curl无法直接获取apis中 ...
 - SQLSERVER 在PROCEDURE 中动态执行SQL语句【EXEC】并获取
			
1.直接上代码 CREATE PROCEDURE [dbo].[TEST] AS BEGIN DECLARE )='N8-4F', --構建SQL需要的條件 ),--構建後的SQL語句 @cnt in ...
 - 电脑无法上网,DNS出现fec0:0:0:ffff::1%1问题
			
具体描述:qq,微信可用网,但其他不能用. 一.win+r 输入cmd 打开命令行:ipconfig /all 查看DNS 二.打开文本编辑器,输入如下文本: @Echo onpushd\window ...
 - 某康x电视去广告
			
开启adb 信源选择进入模拟电视 然后按菜单键输入2008 找到其他选项,进去把adb root打开 删除对应广告视频(短暂方法) 可以下载tvbox,利用文件管理功能 进入/data/misc/ko ...
 - hive面试题(免费拿走不谢)
			
Hive 最常见的几个面试题 1.hive 的使用, 内外部表的区别,分区作用, UDF 和 Hive 优化(1)hive 使用:仓库.工具(2)hive 内部表:加载数据到 hive 所在的 hdf ...
 - jQuery实现购物车效果
			
简单的购物车效果 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
 - JS-完数
			
完数 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数 ...
 - 交换机配置-----monitor session
			
目录 交换机配置-----monitor 1.前言 2.monitor session的作用 3.配置命令 4.使用 交换机配置-----monitor 1.前言 本文章适用于Dell Network ...
 - Delphi 重载方法与重定义方法
 - kubernetes之download api
			
download api作用: 可以通过环境变量或Volume挂载将pod信息注入到容器内部 apiVersion: apps/v1 kind: Deployment metadata: name: ...