Codeforces Round 907 (Div. 2)

发布时间 2023-11-06 11:55:35作者: yufan1102

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;
}