题目来源
Problem - B - Codeforceshttps://codeforces.com/contest/1604/problem/B
题干
官方思路
解释
当数列个数n为偶数时,我们可以分成n的子数列,每个数列只有一个元素,这样LIS就都为1
偶数个1 XOR运算必然为0
所以都是可以的
当n为奇数时,我们可以寻找相邻的两个元素,ai和ai+1,只要保证ai>=ai+1;即可,然后将他们两个分成一组,LIS仍然为1,剩余n-2个参考偶数情形处理
但当数列为严格递增时,不存在满足的情况
官方源代码
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t; cin >> t;
while (t--) {
int n; cin >> n;
vector<int> a(n + 1);
bool inc = true;
for (int i = 1; i <= n; i++) {
cin >> a[i];
inc &= a[i] > a[i - 1];
}
if (n % 2 == 0 or !inc) {
cout << "YES\n";
}
else {
cout << "NO\n";
}
}
return 0;
}
inc用于记录数列是否为单调递增,当不是递增时,inc为false,此时进行按位与运算则一直保持为0