(并查集)~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
多组数据(<=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
每组数据输出一行,表示最大可能的效果值。
Sample Input
Sample Output
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 = 1000000007; const LL INF= 1e9+7; const int N = 810;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=0;for(i=0; i<=n; i++)f[i] = i;for(i=1; i<=n; i++)for(j=1; 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=0; i<k; i++){int x = Find(a[i].x);int y = Find(a[i].y);if(x==y) continue;if(x!=y && cnt>2){f[x] = y;cnt--;}elseans = min(ans, a[i].cost);if(ans!=INF) break;}printf("%d\n", ans);}return 0; }
转载于:https://www.cnblogs.com/YY56/p/5504163.html
(并查集)~APTX4869(fzu 2233)相关推荐
- 【并查集+dp】Team
Team 时间限制: 1 Sec 内存限制: 128 MB 提交: 124 解决: 10 [提交] [状态] [命题人:admin] 题目描述 ACM-ICPC is a interesting ...
- HDU 3974 Assign the task(树 并查集)
题意 公司中有n个员工 除了boss 每个员工都有自己的上司 自己下属的下属也是自己的下属 当给一个员工分配任务时 这个员工会把任务也分配到自己的所有下属 每个员工都只做最后一个被分配 ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法
tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...
- POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树
一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...
- 【BZOJ1015】【JSOI2008】星球大战 并查集
题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...
- 并查集 HDOJ 1232 畅通工程
题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...
- 1013 Battle Over Cities(并查集解法)
关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...
最新文章
- 2021-2027年中国涂装行业市场需求预测与投资战略规划分析报告
- abstract类和接口interface的联系和区别
- 特征值与特征向量(一)
- leetcode 刷题142 143
- 负载测试工具Ripplet
- BugkuCTF-MISC题一切有为法如梦幻泡影
- 为什么main方法是public static void?
- c++求n的几次方_2.七年级数学:怎么求mn+mn的值?完全平方公式,用配方法
- 预编译头文件(precompiled header)说明
- cookie Web Storage API
- json html双引号,当gethtml方法返回json时,json中的字符串如果存在双引号,会破坏json的格式, 如:quot;...
- go - 构造复杂json串
- 使用SecretScanner发现容器镜像和文件系统中的敏感数据
- 数商云制药医药供应链erp管理系统解决方案
- 扩展名为bat的文件的创建
- Windows返回桌面快捷键
- Cocos Creator之打包设置横竖屏
- Anchor Based和Anchor Free的相爱相杀与ATSS的诞生
- 程序员35岁危机是一个善意的谎言,保持危机感但不用惊恐
- 关于ARM指令的英文全称(方便记忆|巧记汇编指令)
热门文章
- 六、Oracle学习笔记:字符串函数
- Linux chapter 7
- 抄答案就是了,两套详细的设计方案,解决头疼的支付掉单问题
- 1.5.PHP7.1 狐教程-(PHP开发工具 PHPStorm 配置)
- Eclipse、STS 常用设置、操作 与 常用快捷键
- python源代码文件_Python代码编译与反编译
- 幂次方计算_收藏!机考计算器用法汇总,算题速度提高几倍
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-2.申请微信支付介绍和不同场景的支付方式...
- 阶段3 2.Spring_01.Spring框架简介_05.spring的优势
- Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片