题解:P12696 [KOI 2022 Round 2] 原位卡片
Gilbert1206 · · 题解
题解:P12696 [KOI 2022 Round 2] 原位卡片
题目传送门
思路
这道题要求你最少移开多少个数保证剩下的数
code
#include<bits/stdc++.h>
using namespace std;
int a[270000],b[270000];
int main(){
int n,ans=0;
cin>>n;
for(int i=1;i<=260000;i++){
b[i]=1e9;
}//初始化
for(int i=0;i<n;i++){
cin>>a[i];
if(b[a[i]-1]!=1e9&&b[a[i]]==1e9){//如果 b[a[i]-1] 没有被标记过下标,则说明我们此时不需要标记。如果 b[a[i]] 被标记过说明它不是离 b[a[i]-1] 的最短。
b[a[i]]=i;
}
}
for(int i=1;i<=260000;i++){//从 1 开始直到 b[i] 没有被标记过。
if(b[i]==1e9){
cout<<n-ans;
return 0;
}
ans++;
}
return 0;
}