CF534A Exam 构造

An exam for n students will take place in a long and narrow room, so the students will sit in a line in some order. The teacher suspects that students with adjacent numbers (i and i + 1) always studied side by side and became friends and if they take an exam sitting next to each other, they will help each other for sure.

Your task is to choose the maximum number of students and make such an arrangement of students in the room that no two students with adjacent numbers sit side by side.

Input

A single line contains integer n (1 ≤ n ≤ 5000) — the number of students at an exam.

Output

In the first line print integer k — the maximum number of students who can be seated so that no two students with adjacent numbers sit next to each other.

In the second line print k distinct integers a1, a2, ..., ak (1 ≤ ai ≤ n), where ai is the number of the student on the i-th position. The students on adjacent positions mustn‘t have adjacent numbers. Formally, the following should be true:|ai - ai + 1| ≠ 1 for all i from 1 to k - 1.

If there are several possible answers, output any of them.

Sample test(s)

input

6

output

61 5 3 6 2 4

input

3

output

21 3

直接特判n<=4对于n>4,肯定是可以全部出来的构造:先输出所有奇数,再输出所有偶数如n=7,则输出:71 3 5 7 2 4 6
#include<cstdio>
#include<iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n==1 || n==2){
        cout<<"1\n1"<<endl;
    }
    else if(n==3){
        cout<<"2\n1 3"<<endl;
    }
    else if(n==4){
        cout<<"4\n2 4 1 3"<<endl;
    }
    else{
        cout<<n<<endl;
        for(int i=1;i<=n;i+=2)
            cout<<i<<" ";
        for(int i=2;i<=n;i+=2){
            cout<<i;
            if(i==n-1 || i==n)
                cout<<endl;
            else
                cout<<" ";
        }
    }
    return 0;
}
				
时间: 2024-12-23 17:49:29

CF534A Exam 构造的相关文章

Codeforces Round #298 (Div. 2)

A - Exam 构造 1 #include <cstdio> 2 3 int ans[5000 + 5]; 4 5 int main() { 6 int n, cnt = 1; 7 scanf("%d", &n); 8 for (int i = 1; i <= n; i++) { 9 if (i&1) ans[i] = cnt; 10 else { 11 ans[i] = n+1-cnt; 12 cnt++; 13 } 14 } 15 ans[0]

面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】

写在前面: 我记得也不全,如果有记录的更全的同学可以留言,我会添加哒 :) 常量 内敛函数 为什么需要内敛函数 内敛函数适用于什么场合 内敛函数本身,最大优点是,避免了真正函数调用的开销 因为普通函数调用会有开销,比如开辟一个栈,结束了还要释放局部变量 如果函数体只有寥寥几行,是不值得使用函数 在函数体代码比较短小的时候,使用频繁的,应该使用内敛函数 最大优点:没有函数调用开销,又解决了带有参数宏的简单替换,它有类型检查 引用 什么是引用:给这块区域的数据再增加一个名称(本质含义) 表面上看,相

CodeForces 404C Restore Graph (构造)

题意:让人构造一个图,满足每个结点边的数目不超过 k,然后给出每个结点到某个结点的最短距离. 析:很容易看出来如果可能的话,树是一定满足条件的,只要从头开始构造这棵树就好,中途超了int...找了好久. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include

[.net]基元线程同步构造

1 /* 基元线程同步构造 2 用户模式构造: 3 易变构造(Volatile Construct) 4 互锁构造(Interlocked Construct):自旋锁(Spinlock) 乐观锁(Optimistic Concurrency Control,乐观并发控制) 5 内核模式构造: 6 事件构造(Event) 7 信号量构造(Semaphore) 8 互斥体构造(Mutex) 9 */ 10 11 //易变构造,Volatile.Write()之前的所有字段写入操作,必须再该方法调用

C++基础3 类:构造 拷贝 析构函数,

为什么会出现构造函数 与 析构函数 [email protected]:~/c++$ cat main.cpp  #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; class Test { public: void init() { a = 1; b = 2; } private: int a; int b; }; int main() { Test arr[

继承的构造和析构顺序

程序示例 1 #include <iostream> 2 using namespace std; 3 class a 4 { 5 public: 6 a(){cout<<"构造a"<<endl;} 7 ~a(){cout<<"析构a"<<endl;} 8 }; 9 class b 10 { 11 public: 12 b(){cout<<"构造b"<<endl;

基于mezzanine的攻防比赛环境搭建及漏洞构造

虚拟部署 virtualenv是python环境配置和切换工具,进入该虚拟环境后,pip安装的软件不影响当前主环境,这样就能很好的安装几个python版本了,解决了库之间的依赖关系. 安装virtualenv和pipsudo apt-get install python-virtualenv python-pip 创建虚拟部署环境 [email protected]:~$virtualenv -p /usr//bin/python2.7 app [email protected]:~$ cd a

HDU 4888 神奇最大流行进列出构造矩阵

题意:  给你一个N ,M   构造一个N*M的矩阵,矩阵中每个元素为0-K: 给你每行的和与每列的和. 如果解法唯一 ,输出解法 如果解法不唯一,输出一句话, 如果没有解法,输出一句话. 题解:   经典建图 s ---> 每个行节点,流量为行和 每个列节点----〉t,流量为列和 每行每列单独连接,流量为K 代码: #include<stdio.h> #include<queue> #include<iostream> #define INF 10000000

ios构造httpPost头结构

ios构造httpPost头结构 by 伍雪颖 NSString* urlStr = @"; NSURL* url = [NSURL URLWithString:urlStr]; NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; [request addValue:@"application/x-www-form