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
|
3月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
45 0
|
6月前
【每日一题Day249】LC1186删除一次得到子数组最大和 | 动态规划
【每日一题Day249】LC1186删除一次得到子数组最大和 | 动态规划
43 0
|
6月前
|
Java
每日一题《剑指offer》数组篇之二维数组中的查找
每日一题《剑指offer》数组篇之二维数组中的查找
54 0
|
存储 算法
数组OJ题(2)
数组OJ题(2)
111 0
|
存储
数组OJ题(1)
数组OJ题(1)
56 0
|
存储
数组OJ题(总)
数组OJ题(总)
76 0
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
61 0