【按位异或】B. XOR Specia-LIS-t

题目来源

Problem - B - Codeforcesicon-default.png?t=L9C2https://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

おすすめ

転載: blog.csdn.net/nathanqian123/article/details/121064331