题解:P12696 [KOI 2022 Round 2] 原位卡片
dengrunze2608 · · 题解
一道模拟题
题目传送门
题意
有
移除若干张卡片后,如果剩下卡片中从左数第
分析
创建
-
数组是否本来就满足要求。
-
数组是否有
1 (因为“原位状态”必须从1 开始,没有1 需要全部删除)。
先遍历一遍数组,如果本来就满足要求直接输出
如果以上特殊条件均不满足,则定义变量 a[i]==k 就让 k++,最后
代码
#include<bits/stdc++.h>
using namespace std;
int n,a[250005];
int f1=0,f2=0,k=1;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(a[i]!=i)f1=1;//本来就满足要求 。
if(a[i]==1)f2=1;//没有 1 那么就需要全部删除 。
}
if(f1==0){
cout<<0;return 0;
}
else if(f2==0){
cout<<n;return 0;
}
for(int i=1;i<=n;i++){
if(a[i]==k){
k++;
}
}
cout<<n-(k-1);
return 0;
}