lanqiao oj 185 修改数组

简介: lanqiao oj 185 修改数组

用户登录

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 1e6 +10 ;
int n ;
int a[N] ;
int s[N] ;
int find(int x){
  if(x != s[x]) s[x] = find(s[x]) ;
  return s[x] ;
}
int main(){
  cin >> n ;
  for(int i = 1 ; i <= N ;i ++) s[i] = i ; //因为我们要求的并查集可能很大,所以初始化更多一点 
  for(int i = 1 ; i <= n ;i ++){
    int x ; cin >> x ; 
    int root = find(x) ;//我们先找到这个数的根节点,根节点就是现在这个数已经排到的第几个数 
    a[i] = root ;//我们把a[i]安排根节 
    s[root] = find(root + 1) ;//因为根节点已经用了,所以我们把当前根节点的根节点,指向下一个数的根节点 
  }
  for(int i = 1 ; i <= n ;i ++) cout << a[i] <<" " ;
  cout << endl ;
}
目录
相关文章
|
6月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
1月前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
10 0
|
1月前
lanqiao OJ 2143 最少刷题数
lanqiao OJ 2143 最少刷题数
12 0
|
6月前
|
Java
【剑指offer】-二维数组的查找-01/67
【剑指offer】-二维数组的查找-01/67
|
6月前
|
Java
每日一题《剑指offer》数组篇之二维数组中的查找
每日一题《剑指offer》数组篇之二维数组中的查找
53 0
|
6月前
|
算法
牛客网-二维数组的查找
牛客网-二维数组的查找
52 0
|
存储 算法
数组OJ题(2)
数组OJ题(2)
106 0
|
存储
数组OJ题(1)
数组OJ题(1)
52 0
|
存储
数组OJ题(总)
数组OJ题(总)
71 0
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
61 0