单链表式并查集

在这里插入图片描述
在这里插入图片描述
如果用暴力算法的话,那么会直接超时,我们要学会用并查集去记录下一个空闲的位置

#include<bits/stdc++.h>
using namespace std;const int N = 100005;int n;
int fa[N];
int a[N];int find(int x) {if (fa[x] == x) {return x;}fa[x] = find(fa[x]);return fa[x];
}void ini() {for (int i = 0; i < N; i++) {fa[i] = i;}
}int main() {int ans = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}ini();for (int i = 1; i <= n; i++) {int p = find(a[i]);if (p == a[i]) {  // 如果空闲位置和当前是一样的fa[p] = find(p + 1);  // 指向下一个空闲位置}else {// 不是一样的说明有重复ans += p - a[i];a[i] = p;  // 更新数量fa[p] = find(p + 1);}}//cout << ans << endl;for (int i = 1; i <= n; i++) {cout << a[i] << " ";}return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;const int N = 200005;#define  int long longint n;
int fa[N];
int a[200005];int find(int x) {if (fa[x] == x) {return x;}fa[x] = find(fa[x]);return fa[x];
}void ini() {for (int i = 0; i < N; i++) {fa[i] = i;}
}signed main() {int ans = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}ini();for (int i = 1; i <= n; i++) {int p = find(a[i]);if (p == a[i]) {  // 如果空闲位置和当前是一样的fa[p] = find(p + 1);  // 指向下一个空闲位置}else {// 不是一样的说明有重复ans += p - a[i];a[i] = p;  // 更新数量fa[p] = find(p + 1);}}cout << ans << endl;for (int i = 1; i <= n; i++) {cout << a[i] << " ";}return 0;
}

我们还可以换

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=200005;
ll a[N]={0},b[N]={0},n,t,ans=0;
map<int,int> fa;
int find(int i){if(!fa.count(i)) return i;else return fa[i]=find(fa[i]);
}
int main(){scanf("%lld",&n);for(int i=0;i<n;i++){scanf("%lld",&a[i]);}for(int i=0;i<n;i++){t=find(a[i]);fa[t]=t+1;ans+=t-a[i];a[i]=t;}printf("%lld\n",ans);for(int i=0;i<n;i++) printf("%lld ",a[i]);return 0;
}

在这里插入图片描述
这个题目没什么思路,很多次的修改操作,还有可能会有重叠
我们直接从第m次开始,用fa[x]记录下一个空闲的位置,每一个馒头只刷一次颜色

#include<bits/stdc++.h>
using namespace std;const int N = 1e6 + 5;
typedef long long ll;
int n, m,p,q;ll fa[N];
ll a[N];void ini() {for (int i = 0; i < N; i++) {fa[i] = i;}
}int find(int x) {if (fa[x] == x) return x;fa[x] = find(fa[x]);return fa[x];
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n >> m >> p >> q;ini();while (m) {int ll = (m * p + q)%n + 1;int rr = (m * q + p) % n + 1;int l = min(ll, rr);int r = max(ll, rr);int x = find(l);while (x <= r) {a[x] = m;fa[x] = find(x + 1);x = find(x);}m--;}for (int i = 1; i <= n; i++)cout << a[i] << '\n';cout << flush;return 0;
}

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

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

相关文章

SGP.22-V.3.1-安全3

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). ReplaceSessionKeys 您提供的文本描述了在加载绑定配置文件包&#xff08;Bound Profile Package&#xff0c;BPP&#xff09;期…

Etcd集群选举细节

日志级别 在 etcd 集群中&#xff0c;领导者选举是 Raft 协议的一部分&#xff0c;用于在当前领导者失败或无法与集群中的其他节点通信时选出新的领导者。以下是您提供的日志中与领导者选举相关的一些关键条目&#xff0c;以及对它们的详细说明&#xff1a; 节点失去领导者&am…

支付时,中国网联结算与中国银联结算的区别与联系

随着电子商务和互联网支付的快速发展&#xff0c;中国的支付清算市场也呈现出前所未有的繁荣景象。在这个大背景下&#xff0c;中国网联与中国银联作为两大支付清算机构&#xff0c;各自扮演着重要的角色。本文将对两者的区别和联系进行深入探讨&#xff0c;以期对读者有更全面…

网盘应用:桌面端界面欣赏,这个赛道容不下小玩家。

网盘&#xff08;Cloud Storage&#xff09;是一种云存储服务&#xff0c;允许用户在互联网上存储、管理和共享文件。它提供了一个在线的虚拟硬盘&#xff0c;用户可以通过网络将文件上传到云端&#xff0c;并随时随地访问和管理这些文件。 阿里云盘

办公类的Erp全流程管理系统有哪些靠谱的?

不知不觉&#xff0c;跟公司老板创业开始已经5年有余&#xff0c;感觉部门墙越来越厚。 财务跟业务经常开始漫长的对账过程&#xff0c;时不时HR也会牵涉进来&#xff0c;对销售团队进行考核结果确认&#xff0c;每个业务的催账任务也得最终落到实处。 老板早就对这样的状况深…

二、双fifo流水线操作——verilog练习与设计

文章目录 一、案例分析二、fifo_ctrl模块设计2.1 波形设计&#xff1a;2.2 代码实现2.2.1 fifo_ctrl2.2.2 顶层文件top_fifo_ctrl&#xff08;rx和tx模块省略&#xff09;2.2.3 仿真文件tb_fifo_ctrl 2.3波形仿真 一、案例分析 案例要求&#xff1a;写一个 fifo 控制器&#x…

我独自升级崛起加速器推荐 我独自升级免费加速器

近期&#xff0c;《我独自升级》这部动画凭借爆棚的人气&#xff0c;在各大平台上掀起了一阵观看热潮&#xff0c;其影响力不容小觑。借此时机&#xff0c;韩国游戏巨头网石集团敏捷响应&#xff0c;顺势推出了同名游戏《我独自升级&#xff1a;ARISE》&#xff0c;为粉丝们搭建…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第9章ubuntu系统下升级固件

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

如何将pdf文件换成3d模型?---模大狮模型网

PDF文件是一种广泛用于文档传输和共享的格式&#xff0c;但在某些情况下&#xff0c;我们可能希望将其中的内容转换为更具交互性和视觉效果的3D模型。本文将介绍如何将PDF文件转换为3D模型&#xff0c;为您展示实现这一想象的步骤。 选择合适的PDF文件&#xff1a; 首先&#…

​「Python绘图」绘制五角星

python 绘制五角星 一、预期结果 二、核心代码 import turtle print("开始绘制五角星")# 设置画布尺寸 # screen turtle.Screen() # screen.setup(width500, height500)# 创建Turtle对象 pen turtle.Turtle() pen.shape("turtle")# 移动画笔到起始位置 …

axios 取消token 模糊搜索

import axios from ‘axios’; // 创建一个取消令牌源&#xff08;cancel token source&#xff09; const CancelToken axios.CancelToken; const source CancelToken.source(); // 下拉框搜索函数 function search() { // 获取输入值 const inputValue document.getElem…

为什么说RK3562可以碾压PX30?

在如今的科技市场中&#xff0c;处理器的性能直接决定了设备的运行速度和用户体验。今天&#xff0c;我们将对比瑞芯微旗下的两款处理器&#xff1a;PX30与RK3562。RK3562比PX30的性价比究竟高在哪里&#xff1f; PX30 瑞芯微PX30是一款高性能的四核应用处理器&#xff0c;专…

【excel】统计单元格内数字/字符串的数量

文章目录 一、问题二、步骤&#xff08;一&#xff09;将A1中的数字分解出来&#xff0c;在不同的单元格中显示&#xff08;二&#xff09;统计每个数字出现的个数&#xff08;三&#xff09;去重 三、尾巴 一、问题 单元格中有如下数值&#xff1a;12345234534545&#xff0c…

【爬虫】使用parse_qs函数来将查询字符串转换成字典

在Python中&#xff0c;可以使用urllib.parse模块中的parse_qs函数来将查询字符串转换成字典。下面是一个例子&#xff1a; from urllib.parse import parse_qs # 查询字符串 query_string "appId5053&cityCode110100&t1715150256145&pageIndex1&pageSi…

科锐国际(计算机类),汤臣倍健,中建三局,宁德时代,途游游戏,得物,蓝禾,顺丰,康冠科技24春招内推

科锐国际&#xff08;计算机类&#xff09;&#xff0c;汤臣倍健&#xff0c;中建三局&#xff0c;宁德时代&#xff0c;途游游戏&#xff0c;得物&#xff0c;蓝禾&#xff0c;顺丰&#xff0c;康冠科技24春招内推 ①汤臣倍健 【内推岗位】&#xff1a;市场类、营销类、研发类…

Python中合并列表(list)的六种方法

列表是Python中强大的数据结构&#xff0c;很多时候我们要对它进行增、删、改、查&#xff0c;其中增是常见的操作&#xff0c;一般通过合并列表的方法来实现。那么&#xff0c;如何把2个列表合并成多个列表呢&#xff1f;今天我们就来学习一下六种不同的方法。 一、直接用 合…

微信社交平台的未来展望,2024微信的重点发展趋势

WeChat社交媒体平台概述 截至2024年&#xff0c;WeChat的月活跃用户超过13亿&#xff0c;预计到今年年底&#xff0c;WeChat用户将超过16.7亿。当然&#xff0c;全球WeChat用户数量的数字表明&#xff0c;该应用程序在世界上最受欢迎的应用程序中排名第五&#xff08;仅次于Fa…

JAVA语言开发的:一套智慧校园平台主要由哪些系统组成、又有哪些前景呢?让我们一起来看一看

▶技术架构&#xff1a;后端&#xff1a;Java 框架&#xff1a;springboot 前端页面&#xff1a;vue 小程序&#xff1a;小程序原生开发 ▶电子班牌&#xff1a;Java Android 源码有演示&#xff0c;自主研发&#xff0c;官方正版授权&#xff0c;联系客服咨询&#xff0…

基于Linux中的 进程相关知识 综合讲解

目录 一、进程的基本概念 二、pid&#xff0c;ppid&#xff0c;fork函数 三、进程的状态讲解 四、进程的优先级 五、完结撒❀ 一、进程的基本概念 概念&#xff1a; ● 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 ● 内核观点&#xff1a;担当…

STM32 内嵌的自举程序

内嵌的自举程序&#xff08;Embedded Bootloader&#xff09;是嵌入在STM32微控制器内部的程序&#xff0c;用于在系统上电后加载用户应用程序。这个内嵌的自举程序通常被称为引导加载程序&#xff08;Bootloader&#xff09;。它的作用是在系统启动时负责初始化硬件环境&#…