蓝桥杯——修改数组(思维+并查集)

简介: 蓝桥杯——修改数组(思维+并查集)

原题链接

思路:

1.暴力枚举,用map标记前面是否出现过一个数,大约过60%左右的数据。

2.单链表并查集。

相当于是一个链式结构。

i的根节点表示从i开始向右找,第一个没有被用过的数。

最开始每个数都指向自己,一旦出现有个数被用过的话,就让root[x]=x+1。

图示在参考博客的聚聚那。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
int a[maxn],root[maxn];
int Find(int x){
    if(x!=root[x]) root[x]=Find(root[x]);
    return root[x];
}
///i所在树的根节点表示从i开始向右找 第一个没有被用过的数
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=0;i<maxn;i++) root[i]=i;
    for(int i=1;i<=n;i++){
        a[i]=Find(a[i]);
        cout<<a[i]<<" ";
        root[a[i]]=a[i]+1;
    }
    return 0;
}

参考博客

目录
相关文章
|
1月前
|
机器学习/深度学习 Java BI
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-970 数组移动
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-970 数组移动
38 0
|
1月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-49 算法训练 寻找数组中最大值
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-49 算法训练 寻找数组中最大值
41 0
|
13天前
蓝桥杯动态规划-第五弹 最大子数组和 买卖股票最佳时机IV 第N个泰波那契数 环形数组
蓝桥杯动态规划-第五弹 最大子数组和 买卖股票最佳时机IV 第N个泰波那契数 环形数组
|
1月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
26 0
|
1月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-79 删除数组零元素
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-79 删除数组零元素
25 0
|
1月前
|
存储 Java 索引
第十四届蓝桥杯集训——数组(一维)
第十四届蓝桥杯集训——数组(一维)
47 0
|
1月前
|
人工智能 算法 Java
数组元素的目标和(蓝桥杯每日一题)
数组元素的目标和(蓝桥杯每日一题)
29 0
|
1月前
|
人工智能 算法 Java
截断数组(蓝桥杯每日一题)
截断数组(蓝桥杯每日一题)
27 0
|
1月前
蓝桥杯vip测试题系统-数组求和(解题思路以及解题代码,手画思路图虽然丑丑的)
蓝桥杯vip测试题系统-数组求和(解题思路以及解题代码,手画思路图虽然丑丑的)
34 0
|
11月前
|
人工智能 BI
《蓝桥杯每日一题》并查集·AcWing1249. 亲戚
《蓝桥杯每日一题》并查集·AcWing1249. 亲戚
38 0