修改陣列【並查集維護集合的最大值、連續數字的最大值】
修改陣列
題意
思路
並查集蠻巧妙用法,暴力的話,加個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陣列
- LeetCode 410——分割陣列的最大值LeetCode陣列
- C語言函式題-查詢陣列每行的最大值C語言函式陣列
- JavaScript陣列最大值、最小值和平均數JavaScript陣列
- JavaScript 獲取陣列中最大值JavaScript陣列
- JavaScript 陣列排序 與 求最大值JavaScript陣列排序
- JavaScript陣列中的最大值和最小值JavaScript陣列
- 2439. 最小化陣列中的最大值陣列
- 給出一個由[-100,100]之間整陣列成的陣列,求其相加和最大的連續子陣列 輸入 一個連續整陣列成的陣列 輸出 子陣列相加的最大值 樣例輸入 -......陣列
- lc3041 修改陣列後最大化陣列中的連續元素數目陣列
- JavaScript 陣列最大值和最小值JavaScript陣列
- Golang獲取int陣列裡的最大值和下標Golang陣列
- 數列區間最大值(ST表)
- JavaScript獲取陣列最大值和最小值JavaScript陣列
- 給定一個整數陣列,找出總和最大的連續數列,並返回總和。陣列
- [劍指offer題解][Java]佇列的最大值/滑動視窗的最大值Java佇列
- 雙指標查詢陣列的連續規律子陣列問題指標陣列
- 尋找陣列中的最大值和最小值O(1.5*N)陣列
- 【陣列】1550. 存在連續三個奇數的陣列(簡單)陣列
- 求陣列之和,最小值,最大值,平均值陣列
- 【演算法實戰】生成視窗最大值陣列演算法陣列
- 請求出一個陣列int[]的最大值{4,-1,9,10,23},並得到對應的下標陣列
- 1434: 矩陣的最大值(指標專題)矩陣指標
- 編寫類A01,定義方法max,實現求某個double陣列的最大值,並返回陣列
- 求10 個整數中最大值並輸出
- C++陣列的連續性C++陣列
- 連續子陣列的最大和陣列
- JS求陣列的交集、並集、差集JS陣列
- 二維陣列中的查詢陣列
- 求 10 個整數中的最大值
- Python演算法與資料結構--求所有子陣列的和的最大值Python演算法資料結構陣列
- Python演算法與資料結構–求所有子陣列的和的最大值Python演算法資料結構陣列
- 劍指 Offer 59 - II. 佇列的最大值佇列
- JAVA 求出一個一維int型陣列的元素最大值、最小值、平均值、和所有元素之和Java陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 【JZOF】二維陣列中的查詢陣列
- 字尾陣列(後續)陣列