[ICPC2022 Jinan R] Stack Sort
Description
给定一个
Solution
显然栈中的元素一定满足
考虑开一个 bool 数组维护此时的某个元素是否可以压入某个栈中。(总不能真的去维护
时间复杂度
Code
#include <iostream>
using namespace std;
int n, ans;
bool vis[500005]; //vis[i]:此时第i位可以并入之前的栈
int read(){
int x = 0;
char a = getchar();
while(a < '0' || a > '9') a = getchar();
while('0' <= a && a <= '9') x = (x << 1) + (x << 3) + (a ^ 48), a = getchar();
return x;
}
void write(int x){
if(x > 9) write(x / 10);
putchar(x % 10 | 48);
}
int main(){
for(int _ = read(); _ >= 1; _ --){
n = read(), ans = 0;
for(int i = 1; i <= n; ++ i) vis[i] = 0;
for(int i = 1; i <= n; ++ i){
int a = read();
if(!vis[a]) ++ ans;
vis[a - 1] = 1;
}
write(ans), puts("");
}
return 0;
}