首页 > 其他 > 详细

A. Suborrays(鸽巢原理)

时间:2020-08-10 10:38:16      阅读:65      评论:0      收藏:0      [点我收藏+]

题意:给定一个序列,包含n个元素,每个元素都是[1, n]中唯一的元素。求是否存在一个序列满足,对于任意的(1 <= i <= j <= n),[i, j]中的每个数异或起来大于j - i + 1,即这个区间的长度。

分析:一个事实:\(p_{i}orp_{i+1}orp_{i+2}\dots>=max(p_{i},p_{i+1},\dots)\)。那么我们只要证明对于任意长度len的子序列,存在一个元素>=len即可,根据鸽巢原理,如果存在一个长度为len的区间,里面的元素为[1, len - 1],那么就会违反这是个序列每个数都只存在一次的性质,因此,对于任意一个长度为len的子序列,都会存在一个大于等于len的元素。所以,只要输出任意一个序列即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int t;
	cin >> t;

	while (t--)
	{
		int n;
		cin >> n;
		for (int i = 1; i <= n; ++i)
			cout << i << " ";

		cout << endl;
	}


	return 0;
}

A. Suborrays(鸽巢原理)

原文:https://www.cnblogs.com/pixel-Teee/p/13467703.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!