Ivan422
2024-11-20 15:36:40
题目大意:给你一个排列
做法:首先考虑分析哪些数可以互换。当
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int _,n,a[N];
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>_;
while(_--){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
if(i==a[i])continue;
if(i<n&&a[i+1]==i&&a[i]==i+1){swap(a[i],a[i+1]);}
else goto nxt;
}
if(true){cout<<"Yes\n";}
else{nxt:;cout<<"No\n";}
}
return 0;
}