bnuoj 1068 比赛安排
来源:互联网 发布:网络语赛车什么意思 编辑:程序博客网 时间:2024/04/25 02:24
E. 比赛安排
1000ms
1000ms
65536KB
BNU ACM/ICPC队的队员在训练之余,常常会举办一些娱乐性的比赛,这些比赛通常都很受大家欢迎。近期,在领队的带领下,1 VS 1取石子大赛又要开始了。在安排日程表时,需要考虑以下两个要求:
1、每个人每天最多只能参加一场比赛,可以不参加。
2、在大赛结束后,任意两人间都恰好进行了一场对决。
由于时间有限,我们希望比赛天数尽可能少,请聪明的你帮忙给出对阵方案。
1、每个人每天最多只能参加一场比赛,可以不参加。
2、在大赛结束后,任意两人间都恰好进行了一场对决。
由于时间有限,我们希望比赛天数尽可能少,请聪明的你帮忙给出对阵方案。
Input
输入包含多组数据。
输入第一行:一个整数t ≤ 50表示测试数据的组数。
每组数据一行包含一个整数2 < n ≤ 100,表明有n个队员参加比赛,且编号为1——n。
输入第一行:一个整数t ≤ 50表示测试数据的组数。
每组数据一行包含一个整数2 < n ≤ 100,表明有n个队员参加比赛,且编号为1——n。
Output
对于每组数据,输出的第一行为一个整数m,表示比赛进行需要的最少天数;接下来m行,依次输出从第一天到第m天的比赛对阵情况,一天一行。
具体输出格式请参照样例。每行末尾不要输出多余的空格。
如果有多种安排方法,输出任意一个即可。
每组答案后面保留一个空行。
具体输出格式请参照样例。每行末尾不要输出多余的空格。
如果有多种安排方法,输出任意一个即可。
每组答案后面保留一个空行。
Sample Input
234
Sample Output
31vs22vs33vs131vs2 3vs41vs3 2vs41vs4 2vs3
31vs22vs33vs131vs2 3vs41vs3 2vs41vs4 2vs3
这是今天下午比赛时的一道题,纠结了很长时间,还好最后做出来了。刚开始我试着枚举全排列,每生成一个排列就判断一次是否符合条件,符合条件就输出。但是我发现当n>10的时候就应经很慢了,如果这样写,肯定会超时。然后就想其他方法。最后想到循环数组,让数组元素循环,比排列快多了。要注意的是n的奇偶性要分开讨论。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[105];int main(){ int t, n, m, i, j; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i = 0; i < n; i++) a[i] = i + 1; if(n % 2 == 0) { printf("%d\n",n-1); for(i = 1; i < n; i++) { int p = 1; for(j = 0; j < n/2; j++) { if(p) { printf("%dvs%d",a[j], a[n-1-j]); p = 0; } else printf(" %dvs%d",a[j], a[n-1-j]); } printf("\n"); int tmp = a[1]; //固定第一个元素不变,只让后面的元素变换 for(j = 1; j < n-1; j++) a[j] = a[j+1]; a[n-1] = tmp; } printf("\n"); } else { printf("%d\n",n); for(i = 0; i < n; i++) { int p = 1; for(j = 0; j < n/2; j++) { if(p) { printf("%dvs%d",a[j], a[n-1-j]); p = 0; } else printf(" %dvs%d",a[j], a[n-1-j]); } printf("\n"); int tmp = a[0]; for(j = 0; j < n-1; j++) a[j] = a[j+1]; a[n-1] = tmp; } printf("\n"); } } return 0;}
0 0
- bnuoj 1068 比赛安排
- bnuoj 1068 比赛安排
- 比赛安排
- 比赛安排
- 比赛安排
- BNU1068:比赛安排
- 算法训练 比赛安排
- Tsinsen A1103 比赛安排
- Tsinsen A1107 比赛安排
- 算法训练 比赛安排
- 算法训练 比赛安排
- first,单循环比赛安排算法
- 蓝桥杯 算法训练 比赛安排
- BNUOJ - 29377 BNU ACM校队时间安排表
- 多人单循环比赛的安排问题
- 2012年亚洲区赛各站比赛的安排
- 【程序8】乒乓球比赛赛程安排
- 关于比赛安排的求解问题
- hadoop 报 Name node is in safe mode 错
- Oracle EBS User Guide - URL
- Basic Level 1018. 锤子剪刀布 (20)
- MySQL Cluster怎样实现向正在运行的数据库中联机添加节点和更新内容
- struts2 实现在线人数和访问源的统计。
- bnuoj 1068 比赛安排
- OCM_Session7_13_database 实例安装和ASM 实例安装
- Algorithm学习笔记 --- Hangover
- 数据库三范式
- 题目1436:Repair the Wall
- ZOJ 1850 Beautiful Meadow
- Java 向上转型和向下转型
- nyoj_324猴子吃桃问题
- ZOJ-3158