2017第十三届湖南省省赛A - Seating Arrangement CSU - 1997

Mr. Teacher老师班上一共有n个同学,编号为1到n。 在上课的时候Mr. Teacher要求同学们从左至右按1,?2,?…,?n的顺序坐成一排,这样每个同学的位置是固定的,谁没来上课就一目了然了。

但是时间长了之后,Mr. Teacher发现坐得离得远的同学往往因为交流很少而逐渐变得生疏了,于是他决定重新安排同学们的座位,并且在新的座位安排中,任意两个相邻的同学的编号之差的绝对值都必须大于d

现在Mr. Teacher需要你帮忙给出一个座位安排方案。

Input

输入包含不超过100组数据。 每组数据包含两个整数n,?d(4?≤?n?≤?100,?1?≤?d?≤?n?−?2)。

Output

对于每组数据,用一行输出一个可行的座位安排方案,相邻两个数之间用一个空格隔开。 座位安排方案由n个1到n的数组成,从左到右依次描述了各个座位安排给了哪个编号的同学。 如果有多种可行的座位安排方案,输出任意一种即可。 如果不存在满足要求的座位安排方案,则输出“-1”。

Sample Input

6 1
6 3
7 2

Sample Output

2 4 6 1 3 5
-1
1 4 7 3 6 2 5

Hint

对于第一个样例,存在多种可行的方案,如1 3 5 2 4 6,2 5 1 4 6 3,4 6 3 1 5 2等,输出任意一个可行方案即可。

对于第三个样例,同样存在多种可行方案,输出任意一个可行方案即可。

补题来了,这道题在比赛的时候其实就是已经有思路的,只不过当时整个人处于一个懵的状态没有写出来。ε=(´ο`*)))唉!!!

思路:

首先,我们可以很直观的就想到输出-1的情况就是d>=n/2。

然后我们就可以想到对于任何数n最大的d,其实就是n/2-1。也就是说我将1 2 3 4 .... n从n/2处分开将前面的1 2 ... n/2 插入到 n/2+1 ... n中间得到的序列 n/2+1 1 n/2+2 2 .. n n/2 就是d最大的情况,只要有序列,那么这个序列一定是满足条件的序列。

// Asimple
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <vector>
#include <string>
#include <cstring>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#define INF 0x3f3f3f3f
#define debug(a) cout<<#a<<" = "<<a<<endl
#define test() cout<<"============"<<endl
#define CLS(a,v) memset(a, v, sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 105;
const ll mod = 1000000007;
int n, m, T, len, cnt, num, ans, Max, k;
int d;int a[maxn];

void input(){
    while( cin >> n >> d ) {
        if( d >= n/2 ) {
            printf("-1\n");
            continue;
        }
        CLS(a, 0);
        k = 0;
        int t = 0;
        while( k<n ) {
            t ++;
            a[k++] = n/2+t;
            a[k++] = t;
        }
        for(int i=0; i<n; i++) printf(i==n-1?"%d\n":"%d ", a[i]);
    }
}

int main() {
    input();
    return 0;
} 
时间: 2024-10-14 09:07:51

2017第十三届湖南省省赛A - Seating Arrangement CSU - 1997的相关文章

湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 228     Solved: 30 Description 在一次足球联合训练中一共有n支队伍相互进行了若干场比赛. 对于每场比赛,赢了的队伍得3分,输了的队伍不得分,如果为平局则两支队伍各得1分. Input 输入包含不超过1000组数据. 每组数据的第

政府工作报告-2018年3月5日在第十三届全国人民代表大会第一次会议上李克强总理所做报告

政府工作报告--2018年3月5日在第十三届全国人民代表大会第一次会议上国务院总理 李总理 各位代表: 现在,我代表国务院,向大会报告过去五年政府工作,对今年工作提出建议,请予审议,并请全国政协委员提出意见. 一.过去五年工作回顾 第十二届全国人民代表大会第一次会议以来的五年,是我国发展进程中极不平凡的五年.面对极其错综复杂的国内外形势,以习主席同志为核心的党中央团结带领全国各族人民砥砺前行,统筹推进"五位一体"总体布局,协调推进"四个全面"战略布局,改革开放和社会

FZU-2231 平行四边形数 From 福州大学第十三届程序设计竞赛

FZU-Problem 2231 平行四边形数 Accept: 66 Submit: 210 Time Limit: 2000 mSec Memory Limit : 32768 KB Problem Description 在一个平面内给定n个点,任意三个点不在同一条直线上,用这些点可以构成多少个平行四边形?一个点可以同时属于多个平行四边形. Input 多组数据(<=10),处理到EOF. 每组数据第一行一个整数n(4<=n<=500).接下来n行每行两个整数xi,yi(0<=

第5届ACM校赛—矩阵

矩阵 题目描述 给定一个n x m 的矩阵,每次操作,你可以对矩阵的某一个元素加上或减去一个整数值d,求最小的操作次数,使得矩阵的所有元素都相同,如果不能实现,输出-1. 输入 输入包含多组测试数据,对于每组测试数据: 第一行为三个整数  , m≤500,1≤d≤10000). 接下来 m 个整数,第 行第 个整数为ij(1  ij≤10). 当n=m=d=0 时代表输入结束. 输出 对于每组测试数据,输出一个整数,为最小操作次数,如果不能实现,输出-1. 64-bit,用long long 定

2016 年宁波工程学院第七届ACM校赛题解报告

2016 年宁波工程学院第七届ACM校赛题解报告 本题解代码直接为比赛代码,仅供参考. A,B,C,D,G,H,J,K,L,M 来自 Ticsmtc 同学. F 来自 Gealo 同学. E,I 来自Alex 学长. Promblem A :    Two Sum 时间限制: 1 Sec  内存限制: 64 MB 题目描述: 给出n个数,另外给出?个整数S,判断是否可以从中取出2个数,使得这两个数的和是S. 输入: 第?行有个整数T(1 <= T <= 10),代表数据组数. 对于每组数据,第

2020第十三届春季国际物联网展览会-南京站3月邀约各位大咖

邀 请 函 时间:2020年03月26-28日 地点:中国?南京国际会展中心4组织单位 特邀单位:××× ×××商务部主办单位:北京铭世博国际展览有限公司 支持单位:××× ×××中国智能家居产业联盟 中华物联网联盟国家信息化专家咨询委员会 中国物联网产业协会 承办单位:北京铭世博国际展览有限公司物联世界 智慧全球前言南京六朝古都是中国东部地区重要的中心城市.全国重要的科研基地和综合交通枢纽,是长江三角洲唯一的特大城市和长三角辐射带动中西部地区发展重要门户城市.首批国家历史文化名城和全国重点风景

2017年ICPC中国大陆区域赛真题(下)

2017年ICPC中国大陆区域赛真题(下) A - Lovers #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,k,a[maxn],b[maxn],ans; int main() { int _; scanf("%d", &_); while (_--) { scanf("%d%d", &n, &k); for (int i =

2017深圳发烧友聚会第十三届圆满结束

7月30日,由LittleDot和雷音音频承办的第13届深圳发烧友聚会在深圳大中华喜来登酒店举行. 本场活动以捐献书籍和教育设施为主,改善偏远农村小学教学器材匮乏窘境 .活动主题是以"乐以载道,献书助学"持续进行,为表谢意,深圳发烧友聚会主办方和所有协办方.赞助商决定提供献书发烧友抽取丰厚奖品的机会.深圳发烧友聚会诚邀了各位音乐发烧友.媒体和厂商朋友参加2017年度深圳发烧盛典·第13届深圳耳机发烧友聚会. 当天,合作媒体:广东广播电视台.耳机大家坛.乐享派.数字尾巴.半烧主义.知客数

ACM总结——2017湖南省省赛总结

2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己菜,但是,实在是没有想到自己竟然这么菜.好了,正式说下这次比赛吧! 集训之前,实验室安排是8月8日放假让我们回去休息几天,然后8月15日正式开始集训.但是,实验室事实上参加省赛的两个队的队员大部分都是没有回去(当然不包括我了,的确很惭愧,虽然的确是家里有事,需要我回去办).我是8月13晚上回的学校,