(并查集)~APTX4869(fzu 2233)
http://acm.fzu.edu.cn/problem.php?pid=2233
Problem Description
为了帮助柯南回到一米七四,阿笠博士夜以继日地研究APTX4869的解药。他得出了如下结果:
1.解药由n种原料构成;
2.对于两种不同的的原料a,b,它们之间有个影响值f(a,b);
3.需要把原料分成两个部分X,Y,每部分中至少有一种原料;
4.解药的效果由分别属于X,Y的原料之间,最小的影响值决定,即
效果=min{f(a,b)|a∈X,b∈Y)}
博士需要你帮忙求出:在所有的方案中,最大的效果值可以是多少?
 Input
 Input
多组数据(<=10),处理到EOF。
每组数据输入第一行为一个正整数n。
接下去是一个n行n列的整数矩阵,同一行的数以空格隔开。矩阵第i行j列表示第i种和第j种材料的影响值f(i,j)。给出的矩阵是对称的,即f(i,j)=f(j,i)。当i=j时,f(i,i)没有意义,矩阵该处的值为-1。
2<=n<=800。当i!=j时,0<=f(i,j)<=1000000;当i=j时,f(i,j)=-1。
 Output
 Output
每组数据输出一行,表示最大可能的效果值。
 Sample Input
 Sample Input
 Sample Output
 Sample Output
 Source
 Source
福州大学第十三届程序设计竞赛
题目描述:
给一个n*n的矩阵,(i, j)表示第 i 种材料 和 第 j 种材料的影响值,这个矩阵代表这n个物品之间的影响值。当把这n个物品分成两部分后,每部分内部材料不会相互影响,但是不同部分的材料之间会相互影响。问如何分割使得两部分材料相互之间的最小影响值最大?
解题思路:
材料内部不会影响,那么只需要把影响值小的物品放在同一部分即可,所以用结构体保存物品之间的影响值,然后sort一下,影响值小的物品用并查集放在一个集合,当集合等于2的时候,遍历到物品分别在不同集合的影响值就是ans。
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define lson 2*root
#define rson 2*root+1
typedef long long LL;
const LL mod = ;
const LL INF= 1e9+;
const int N = ; struct node
{
int x, y, cost; bool friend operator < (node n1, node n2)
{
return n1.cost < n2.cost;
}
}a[N*N]; int f[N]; int Find(int x)
{
if(f[x]!=x)
f[x] = Find(f[x]);
return f[x];
} int main()
{
int n; while(scanf("%d", &n)!=EOF)
{
int i, j, k=; for(i=; i<=n; i++)
f[i] = i; for(i=; i<=n; i++)
for(j=; j<=n; j++)
{
scanf("%d", &a[k].cost);
if(i<j)
{
a[k].x = i;
a[k++].y = j;
}
} sort(a, a+k); int ans = INF, cnt=n;
for(i=; i<k; i++)
{
int x = Find(a[i].x);
int y = Find(a[i].y); if(x==y) continue; if(x!=y && cnt>)
{
f[x] = y;
cnt--;
}
else
ans = min(ans, a[i].cost); if(ans!=INF) break;
} printf("%d\n", ans);
}
return ;
}
(并查集)~APTX4869(fzu 2233)的更多相关文章
- HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)
		http://acm.hdu.edu.cn/showproblem.php?pid=2473 http://acm.fzu.edu.cn/problem.php?pid=2155 题目大意: 编号0~ ... 
- FZu Problem 2233 ~APTX4869 (并查集 + sort)
		题目链接: FZu Problem 2233 ~APTX4869 题目描述: 给一个n*n的矩阵,(i, j)表示第 i 种材料 和 第 j 种材料的影响值,这个矩阵代表这n个物品之间的影响值.当把这 ... 
- FZU 2112 并查集、欧拉通路
		原题:http://acm.fzu.edu.cn/problem.php?pid=2112 首先是,票上没有提到的点是不需要去的. 然后我们先考虑这个图有几个连通分量,我们可以用一个并查集来维护,假设 ... 
- ACM:   FZU 2112 Tickets - 欧拉回路 - 并查集
		FZU 2112 Tickets Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u P ... 
- FZU 2059 MM (并查集+排序插入)
		Problem 2059 MM Accept: 109 Submit: 484Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ... 
- hdu 3018 Ant Trip 欧拉回路+并查集
		Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ... 
- BZOJ 4199: [Noi2015]品酒大会 [后缀数组 带权并查集]
		4199: [Noi2015]品酒大会 UOJ:http://uoj.ac/problem/131 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 ... 
- 关押罪犯 and 食物链(并查集)
		题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ... 
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
		图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ... 
随机推荐
- 【T电商 1】Nginx服务器搭建
			在项目中,首先是需要Nginx服务器作为一个图片服务器来使用.那么,久涉及到服务器的搭建.这次服务器的搭建,主要是在三个环境上进行了学习:CentOS6.2,CentOS7,和Ubuntu16.那么本 ... 
- MVC项目内无法添加System.Web.Optimization
			MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization 
- mysql  不是主键不能删除的保护问题解决办法?
			select * from t_answerexams; delete from t_answerexams where selectid = 'c4582502-8b27-44 ... 
- thinkphp实现单图片上传
			$config=array( 'maxSize' => 3145728, 'savePath' => './Public/Uploads/', 'rootPath' => './', ... 
- ajax执行完成后,再执行下面的代码的解决办法
			一般ajax设置的都是异步的,但是有时候我们有这种需求,就是等ajax执行完成之后,在执行下面的函数. 1设置async:false 在jq中直接设置了ajax是异步的还是同步的 一般如果不写这个,默 ... 
- 在Egret实现二维码长按识别
			Egret中二维码图片,是在canvas上,无法在微信上长按扫描识别. 由于微信长按识别二维码是截屏扫描原理,所以只要长按当前屏幕任意一张图片,都能够识别当前屏幕上的二维码. 这里把二维码放在ex ... 
- Mybatis按SQL查询字段的顺序返回查询结果
			在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ... 
- (转)UVM内容梗概
			1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法 ... 
- SQL 基础:Select语句,各种join,union用法
			一.基本的SELECT语句 1. “*”的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯. 虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多.相应的, ... 
- VC++  在控件上写字时 字体的设置技巧
			//人物照片下方的文字 CFont* nFont = &afxGlobalData.fontRegular; CFont* oFont = pDc->SelectObject(nFont ... 
