修改陣列【並查集維護集合的最大值、連續數字的最大值】
修改陣列
題意
思路
並查集蠻巧妙用法,暴力的話,加個st陣列,每次用while判斷就好了。
這個題實際上要求出:一段連續的數的最大值(這個數沒有被使用過)
要是x被使用過,我們把這個f[X]=X+1,把x的父節點指向x+1。
將前面列舉過的元素用一個集合來表示,集合的根元素是集合所有元素的最大值.
程式碼
#include <cstdio>
const int N = 1100010;
int p[N];
int find(int x)
{
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i < N; i ++ ) p[i] = i;
for (int i = 1; i <= n; i ++ )
{
int x;
scanf("%d", &x);
x = find(x);
printf("%d ", x);
p[x] = x + 1;
}
return 0;
}
相關文章
- 數字之魅:子陣列之和的最大值[二維]+[三維]陣列
- js獲取數字陣列最大值的幾種方式JS陣列
- JavaScript 陣列最大值JavaScript陣列
- C 陣列最大值陣列
- 數字之魅:尋找陣列中的最大值和最小值陣列
- 視窗最大值陣列陣列
- 遞迴求解陣列中的最大值遞迴陣列
- C語言函式題-查詢陣列每行的最大值C語言函式陣列
- JavaScript陣列最大值、最小值和平均數JavaScript陣列
- js如何獲取陣列中的最大值JS陣列
- js獲取數字陣列中的最大值和最小值程式碼例項JS陣列
- JavaScript 獲取陣列中最大值JavaScript陣列
- JavaScript 陣列排序 與 求最大值JavaScript陣列排序
- [待]生成視窗最大值陣列陣列
- LeetCode 410——分割陣列的最大值LeetCode陣列
- JavaScript陣列中的最大值和最小值JavaScript陣列
- 獲取陣列中子串乘積的最大值陣列
- 2439. 最小化陣列中的最大值陣列
- 演算法學習-數字連續的子陣列演算法陣列
- JavaScript 陣列最大值和最小值JavaScript陣列
- JavaScript 陣列 最大值和最小值JavaScript陣列
- JavaScript陣列最大值和最小值JavaScript陣列
- CoffeeScript攻略4.3:取得陣列最大值陣列
- 給出一個由[-100,100]之間整陣列成的陣列,求其相加和最大的連續子陣列 輸入 一個連續整陣列成的陣列 輸出 子陣列相加的最大值 樣例輸入 -......陣列
- lc3041 修改陣列後最大化陣列中的連續元素數目陣列
- 數列區間最大值(ST表)
- Golang獲取int陣列裡的最大值和下標Golang陣列
- 演算法求陣列中的最大值最小值演算法陣列
- [劍指offer題解][Java]佇列的最大值/滑動視窗的最大值Java佇列
- 雙指標查詢陣列的連續規律子陣列問題指標陣列
- JavaScript獲取陣列最大值和最小值JavaScript陣列
- js獲取陣列元素中的最大值和最小值JS陣列
- 給定一個整數陣列,找出總和最大的連續數列,並返回總和。陣列
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- 從一個無序陣列中查詢最大值的最快演算法是什麼?陣列演算法
- 尋找陣列中的最大值和最小值O(1.5*N)陣列
- JavaScript 專題之如何求陣列的最大值和最小值JavaScript陣列
- 【演算法實戰】生成視窗最大值陣列演算法陣列