当前位置: 首页 > news >正文

MT3055 交换排列

1.思路 

若数对为(1,4)和(4,7),则说明14可以互换,47可以互换,并且17也可以互换。所以把可以交换的元素放到一个集合中。

例如样例1:有三个集合,分别为147,369,258。排列中第一个元素为1,所以在147中找最大的数7输出;排列中第二个元素为2,所以在258中找最大的数8输出。(寻找最大值用大根堆存储)

2.代码

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m;
int num[N], fa[N];
priority_queue<int> q[N];
int find(int x)
{ // 查找,带路径压缩return x == fa[x] ? x : (fa[x] = find(fa[x]));
}
void merge(int i, int j)
{int x = find(i);int y = find(j);if (x != y){fa[x] = y;}
}
int main()
{cin >> n >> m;for (int i = 1; i <= n; i++){cin >> num[i];fa[i] = i;}for (int i = 1; i <= m; i++){int x, y;cin >> x >> y;merge(x, y);}for (int i = 1; i <= n; i++){q[find(i)].push(num[i]);}for (int i = 1; i <= n; i++){ // 每次取集合中最大的元素int a = find(i);cout << q[a].top() << " ";q[a].pop();}return 0;
}

http://www.lryc.cn/news/396559.html

相关文章:

  • Zkeys三方登录模块支持QQ、支付宝登录
  • 数字探秘:用神经网络解密MNIST数据集中的数字!
  • 11个IT运维领域必考证书,每一个都含金量极高
  • VScode 常用插件
  • 299k stars利用Public APIs提升开发效率:探索APILayer提供的开源资源
  • 在目标检测数据集上微调Florence-2
  • AI提示词:AI辅导「数学作业」
  • odoo文档的安装
  • 02STM32软件安装新建工程
  • 社区6月月报 | Apache DolphinScheduler重要修复和优化记录
  • Docker 使用基础(2)—镜像
  • Docker学习笔记(三)Dockerfile
  • 学懂C#编程:C# 索引器(Indexer)的概念及用法
  • 汇川CodeSysPLC教程03-2-14 与HMI通信
  • centos部署jar包
  • CSS相对定位和绝对定位的区别
  • SpringCloud之nacos共享配置文件实现多数据源灵活切换
  • 原生小程序生成二维码方法之一
  • Kubernetes k8s Pod容器 探针 健康探测
  • Conformal low power-2.电源感知等效性检查
  • 【密码学】从有限状态自动机到密钥流生成器
  • 3.相机标定原理及代码实现(opencv)
  • Centos7 安装Docker步骤及报错信息(不敢说最全,但是很全)
  • 【C语言】符号优先级详解
  • 天翼云高级运维工程师202407回忆题库 最新出炉
  • 在Python中什么是上下文管理器以及如何使用with语句来管理资源
  • (四)、python程序--贪吃蛇游戏
  • 什么是DNS欺骗
  • C++实现对结构体信息排序
  • [CTF]-PWN:House of Cat堆题型综合解析