单链表式并查集

news2024/11/17 3:56:42

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

#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 long

int 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.coloradmin.cn/o/1643068.html

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

相关文章

ChatGPT DALL-E绘图,制作各种表情包,实现穿衣风格的自由切换

DALL-E绘图功能探索&#xff1a; 1、保持人物形象一致&#xff0c;适配更多的表情、动作 2、改变穿衣风格 3、小女孩的不同年龄段展示 4、不同社交平台的个性头像创作 如果不会写代码&#xff0c;可以问GPT。使用地址&#xff1a;我的GPT4 视频&#xff0c;B站会发&#…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

「Node.js」ESModule 与 CommonJS 的 区别

前言 Node.js支持两种模块系统&#xff1a;CommonJS 和 ESModules&#xff08;ESM&#xff09;&#xff0c;它们在语法和功能上有一些不同。 CommonJS (CJS) CommonJS 是 Node.js 最早支持的模块规范&#xff0c;由于它的出现在ES6之前&#xff0c;因此采取的是同步加载模块…

Linux Ubuntu 开机自启动浏览器

终端输入命令&#xff1a;gnome-session-properties 打开启动设置 如果提示&#xff1a;Command ‘gnome-session-properties’ not found, but can be installed with: apt install gnome-startup-applications 则执行&#xff1a;apt install gnome-startup-applications安装…

用pyecharts完成综合案例之全球GDP动态可视化统计图

综合案例之全球GDP 所用csv文档下载链接如下&#xff1a;https://download.csdn.net/download/qq_42707739/12621102?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171488482816800184124883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownloa…

机器学习周报第40周

目录 摘要Abstract一、文献阅读1.1 摘要1.2 论文背景1.3 论文模型1.3.1 模型概述1.3.2 模型细节 1.4 模型精度 二、论文代码2.1 rtdetr.py2.2 backbone模块2.3 AIFI2.4 CCFM 总结 摘要 本周&#xff0c;我深入研读了RT-DETR&#xff08;实时目标检测变换器&#xff09;论文&am…

【数据结构】初识数据结构

引入&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人&#xff0c;另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生&#xff09; 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述&#xff1a;清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述&#xff1a;清华源创建不成功 本地配置了清华源&#xff0c;但是在创建虚拟环境时不成功&#xff0c;报错如下。 图片若看不清&…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 1 前言 上一篇介绍了Docker的基础概念&#xff0c;带你 入门Docker&#xff0c…

初识webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令&#xff0c;最终产生了哪些变更&#xff0c;将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…

STM32微秒级别延时--F407--TIM1

基本配置&#xff1a; TIM1挂载在APB2总线上&#xff0c;150MHz经过15分频&#xff0c;得到10MHz计数频率&#xff0c;由于disable了自动重装载&#xff0c;所以只需要看下一次计数值是多少即可。 void TIM1_Delay_us(uint16_t us) //使用阻塞方式进行延时&#xff0c;ARR值不…

Colibri for Mac v2.2.0激活版:专业级无损音乐播放器

Colibri for Mac是一款专为Mac用户设计的高分辨率无损音乐播放器。它基于BASS技术构建&#xff0c;为用户带来极致的音频体验。Colibri支持所有流行的无损和有损音频格式&#xff0c;如FLAC、MP3、AAC等&#xff0c;确保音乐播放的清晰度和完美度。其独特的清晰比特完美播放技术…

hadoop学习---基于Hive的教育平台数据仓库分析案例(一)

案例背景&#xff1a; 大数据技术的应用可以从海量的用户行为数据中进行挖掘分析&#xff0c;根据分析结果优化平台的服务质量&#xff0c;最终满足用户的需求。教育大数据分析平台项目就是将大数据技术应用于教育培训领域&#xff0c;为企业经营提供数据支撑。 案例数据产生流…

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统&#xff08;华为技术有限公司开发的分布式操作系统&#xff09; 华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分布式操作系统。 华为鸿蒙…

贪心-耍杂技的牛

问题描述 农民约翰的 N头奶牛&#xff08;编号为 1…N&#xff09;计划逃跑并加入马戏团&#xff0c;为此它们决定练习表演杂技。 奶牛们不是非常有创意&#xff0c;只提出了一个杂技表演&#xff1a; 叠罗汉&#xff0c;表演时&#xff0c;奶牛们站在彼此的身上&#xff0c;形…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层&#xff1a;处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章&#xff1a;Django框架概述 1.1 什么是Django&#xff1f;…