呜呜呜┭┮﹏┭┮,ARC太难了,只会 A 题。
emmmm,乍一看:不就是0,1,2三种情况吗?0,2好判段,直接看1不就行了?然后写出了这个代码↓
#include <bits/stdc++.h>
using namespace std;
#define int long long
int P[200005];
signed main(){
int T;
cin>>T;
while(T--){
int N;
cin>>N;
bool flag=true;
for(int i=1;i<=N;i++){
cin>>P[i];
if(P[i]!=i)
flag=false;
}
if(flag){
cout<<0<<endl;
continue;
}
int ans=2,sum=0;
for(int i=1;i<=N;i++){
sum+=P[i];
if(sum==i*(i+1)/2 && P[i+1]==i+1){
ans=1;
break;
}
}
cout<<ans<<endl;
}
return 0;
}
得到了