zoukankan      html  css  js  c++  java
  • A. Suborrays(鸽巢原理)

    题意:给定一个序列,包含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;
    }
    
  • 相关阅读:
    scjp考试准备
    scjp考试准备
    scjp考试准备
    scjp考试准备
    maven学习手记
    maven学习手记
    ExtJS MVC 学习手记3
    调整maven配置文件
    ExtJS MVC学习手记 2
    ExtJS MVC学习手记 1
  • 原文地址:https://www.cnblogs.com/pixel-Teee/p/13467703.html
Copyright © 2011-2022 走看看