A Sorting with Twos
题目大意:选择一个m,然后将1~2^m下表的数减一,可以操作无限次,问你能不能使数组单调递增
题目数据
8
5
1 2 3 4 5
5
6 5 3 4 4
9
6 5 5 7 5 6 6 8 7
4
4 3 2 1
6
2 2 4 5 3 2
8
1 3 17 19 27 57 179 13
5
3 17 57 179 92
10
1 2 3 4 0 6 7 8 9 10
YES
YES
YES
NO
NO
NO
YES
YES
思路:通过观察发现只有在不是2的倍数的下标的地方并且与其后面一个数不是单调递增答案是NO,其余都可以。
#include<bits/stdc++.h>
using namespace std;
int a[100];
void solve(){
// 1 2 4 8 16 32
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int f=0;
for(int i=1;i<=n-1;i++){
if(a[i]>a[i+1]){
if(i==1||i==2||i==4||i==8||i==16){
continue;
}else{
f=1;
break;
}
}
}
if(f){
cout<<"NO\n";
}else{
cout<<"YES\n";
}
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}