2016陕西省ACM 热身体B 种类并查集

Energy

发布时间: 2017年3月27日 11:31   最后更新: 2017年3月27日 18:30   时间限制: 1000ms   内存限制: 256M

人类准备发射载人飞船前往火星。

飞船使用了一种特殊的反物质燃料来作为动力,在飞船的制造期间,同时人类也在从宇宙

的各个地方收集这种反物质燃料。收集到的燃料被压缩成一些能量块存储在仓库中。

由于对反物质的特性并没有完全研究透彻,人类发现这些能量块两两之间都可能存在一种

诡异的能量排斥现象,如果不能妥善解决存储问题,将影响到未来的许多工作。

科学家建造了2 个特殊的仓库用于存放,当两块存在冲突的能量块被分别存放在两个仓

库中时,它们的排斥作用就可以忽略不计了,只需要考虑存放在同一个仓库中的能量块的排斥

情况。为了存储这些能量块,仓库需要用特殊材料制造,仓库需要承受的排斥能量越高,则建

造仓库所需要的材料也越多。

为了减少建造材料的使用,不得不重新考虑收集得到的这n 块能量块的存储分配问题。

现在,给出所有这n 块能量块之间的冲突情况,要求找到一种分配方案,使得两个仓库中

最高的冲突值最小。只要输出那个冲突值即可。

第一行是一个整数T,表示将有T 组数据。
对于每一组数据:
第一行是2 个整数n、m,分别表示能量块的数量,以及它们之间有冲突的对数;(n
20000;m 100000) 第2 m+1 行,每行3 个整数a、b、c,表示能量块a 与能量块b 之间存
在冲突,且它们能量排斥所产生的冲突值为c。(a; b n; 0 c 1000000000)

对于每一组数据:
首先输出“Case #x:”,x 表示当前测试数据的序号。
然后是一个整数,表示两个仓库中的最大冲突值。

 复制
1
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
Case #1:
3512

对于以上样例说明如下:

Clipboard Image.png

采用这种方式分配存储,两个仓库中的最大冲突值为3512,其他任何方法都不会有更好的结果。


题解:

采用种类并查集

用贪心的方法,按边从大到小考虑,并把两个材料设置为不同的种类,这样的话,当检测到两个材料属于同一种类时候,直接结束。输出答案



#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MAX = 1e5 + 5;
typedef long long LL;
int parent[MAX];
int group[MAX];
typedef pair<int,pair<int,LL> > P;
P es[MAX];
int find(int x)
{if(x == parent[x]) return x;int tmp = parent[x];parent[x] = find(parent[x]);group[x] = (group[x] + group[tmp]) % 2;return parent[x];
}
void init()
{for(int i = 0;i < MAX;i++)parent[i] = i,group[i] = 0;
}
int main()
{int T;scanf("%d",&T);LL cas = 0;while(T--){init();int n,m;scanf("%d%d",&n,&m);for(int i = 0;i < m;i++){int a,b;LL c;scanf("%d%d%lld",&a,&b,&c);es[i].first = -c;es[i].second.first = a;es[i].second.second = b;}sort(es,es + m);int ans = 0;for(int i = 0;i < m;i++){int c = -es[i].first;int a = es[i].second.first;int b = es[i].second.second;int fx = find(a);int fy = find(b);if(fx != fy){parent[fx] = fy;group[fx] = (group[b] - group[a] + 1)%2;}else{if(group[a] == group[b])//同一类ans = c; }if(ans) break;}printf("Case #%d:\n%lld\n",++cas,ans);}
}
/*
2
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
4 6
1 4 2534
2 3 3512
1 2 28351
1 3 6618
2 4 1805
3 4 12884
*/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P2519-[HAOI2011]problem a【dp】

正题 题目链接:https://www.luogu.org/problem/P2519 题目大意 nnn个人&#xff0c;第iii个人说aia_iai​个人比他高&#xff0c;bib_ibi​个人比他低&#xff0c;允许有相同分数&#xff0c;求最少多少人在说谎。 解题思路 我们改为求最多有多少人在说真话&#xff0c;我们发…

kubernetes实践之运行aspnetcore webapi微服务

1、预备工作unbuntu 16.04 or abovedocker for linuxkubernetes for linux 集群环境2、使用vs2017创建一个web api应用程序&#xff0c;并打包镜像到本地。3、推送本地镜像到docker hub4、编写k8s资源配置文件(yml)hello-world-deployment.yml如下上面replicas部署两个副本实例…

2016陕西省省赛 ACM Rui and her functions B 二分

Rui and her functions 发布时间: 2017年3月27日 15:45 最后更新: 2017年3月28日 12:43 时间限制: 10000ms 内存限制: 256M 描述 Rui is magnificently gifted. Why does she not play with me tonight? Oh, she is obsessing about nfunctions with nquartette of posi…

使用.NET Core快速开发一个较正规的命令行应用程序

一般命令行程序包含什么&#xff1f;使用方式帮助信息子命令参数选项帮助信息帮助信息如上&#xff0c;介绍了命令的作用和参数、选项作用。这个是必不可少的。子命令一个应用程序打包了多个功能&#xff0c;这时候就可以使用子命令&#xff0c;比如 dotnet ef migrations&…

牛客-乃爱与城市拥挤程度【树形dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/B 题目大意 nnn个点的一棵树&#xff0c;对于每个点求 距离该点不超过kkk的点数每个点的权值是以该点为起点长度所有不超过kkk的路径覆盖该点的次数&#xff0c;求所有点的乘积 解题思路 对于第一问我们先考虑在子树…

SpringBoot2.1.9 MongoDB的聚合连接

LookupOperation lookupOperation LookupOperation.newLookup().from(AdminRepository.instance().getTableName()). //关联从表名localField(User.Fields.name). //主表关联字段foreignField(Admin.Fields.name).//从表关联的字段as("adminInfo"); //查询结果…

节操大师 北方大学生程序设计竞赛 南开大学

Description MK和他的小伙伴们&#xff08;共n人&#xff0c;且保证n为2的正整数幂&#xff09;想要比试一下谁更有节操&#xff0c;于是他们组织了一场节操淘汰赛。他们的比赛规则简单而暴力&#xff1a;两人的节操正面相撞&#xff0c;碎的一方出局&#xff0c;而没碎的一方晋…

牛客-仓鼠的石子游戏【博弈论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/A 题目大意 nnn个环&#xff0c;第iii个环有aia_iai​个珠子。要求涂色时没有相邻的同色。 两个人轮流涂色&#xff0c;直到一个人无法涂色为止。 解题思路 其实先手后手的胜利与他们的操作没有任何关系。 考虑一个…

Window7 docker安装

一、下载docker toolbox docker-toolbox-windows-docker-toolbox安装包下载_开源镜像站-阿里云 -ce后缀的是免费的版本&#xff0c;其他是收费版本 二、安装 安装完成即可 三、启动docker 双击 Docker Quickstart Terminal启动 其他问题&#xff1a; 启动拉boot2docker镜像失…

aspnetcore.webapi实践k8s健康探测机制 - kubernetes

1、浅析k8s两种健康检查机制Liveness k8s通过liveness来探测微服务的存活性&#xff0c;判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误&#xff0c;可能是系统超载&#xff0c;也可能是资源死锁&#xff0c;此时 httpd 进程并没有异常退出&#xff…

dp 树状数组 逆序元组

wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000ms 内存限制: 512M 描述 交大上课需要打卡&#xff0c;于是在上课前的几分钟打卡机前往往会排起长队。 平时早睡早起早早打卡的wmq昨晚失眠&#xff0c;今天起晚了&#xff0c;于是他…

牛客-服务器需求【线段树】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101/A 题目大意 nnn天第iii天需要aia_iai​台机器&#xff0c;每台机器可以工作mmm天。qqq次修改&#xff0c;每次修改一个aia_iai​&#xff0c;求每次修改后至少需要雇佣多少台机器。 解题思路 很容易想到答案就是max{…

快速搭建CentOS+ASP.NET Core环境支持WebSocket

以前用python&#xff0c;go尝试在linux下做web服务&#xff0c;python没有强类型支持与高性能&#xff0c;go又没有很好的集成开发环境&#xff08;还有强迫症的语法&#xff09;&#xff0c;回头看了几次.net&#xff0c;都没有时间尝试&#xff0c;现终于实现了这些想法&…

博客文章列表(一)——JAVA

一、成长系列 面试 详情列表 编程难题 详情列表 java总结 详情列表 java技能 详情列表 java面…

Cube Or 北方大学生训练赛

Cube Or Time Limit: 2000/2000 MS(Java/Others) Memory Limit: 262144/262144 K(Java/Others) Problem Description : Given you N Integers ai (1≤i≤N) , you can do thefollowing operation: pick out …

牛客-沙漠点列【tarjan】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101#question 题目大意 nnn个点mmm条边的沙漠(所有联通子图都是仙人掌)&#xff0c;删除kkk个点使得剩下的连通块最多。 解题思路 对于图上的每条割边&#xff0c;删去之后就可以多出一个联通块&#xff0c;所以我们就可…

来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor

在今年年初, 恰逢新春佳节临近的时候. 微软给全球的C#开发者们, 着实的送上了一分惊喜. 微软正式开源Blazor &#xff0c;将.NET带回到浏览器.这个小惊喜, 迅速的在dotnet开发者中间传开了. 而就在昨天(2018年3月22日) Blazor发布了它的第一次Release. Blazor到底是个什么样的东…

博客文章列表(二)——算法、数据结构、数据库、ABCD

七、编程基础 数据结构 详情列表 算法 详情列表 算法.排序 详情列表 算法.加密 详情列…

A*B NTT快速数论变换

wmq的AB Problem 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 3000ms 内存限制: 512M 描述 这是一个非常简单的问题。 wmq如今开始学习乘法了&#xff01;他为了训练自己的乘法计算能力&#xff0c;写出了n个整数&#xff0c;并且对每两个数a,…

51nod-猴猴吃苹果【线段树】

正题 题目链接:https://www.51nod.com/Contest/ProblemList.html#contestId188&randomCode291765 题目大意 nnn个点的一棵树&#xff0c;从kkk节点出发&#xff0c;每次走到最远的一个节点(路上点最多,如果有多个就编号最小的)并将路上的点权变为0&#xff0c;求会依次到达…