循环比赛日程表
总时间限制: 1000ms 内存限制: 65535kB
描述
设有n个选手进行循环比赛,其中n=2m,要求每名选手要与其他n-1名选手都赛一次,每名选手每天比赛一次,循环赛共进行n-1天,要求每天没有选手轮空。
输入
m(m<=10)
输出
表格形式的比赛安排表(数字之间以一个空格分开)
样例输入
3
样例输出
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1

思路点拔:
首先,本题从题干入手很难找到规律,所以我们先来分析一下样例
1 2 3 4| 5 6 7 8 样例给出的是2的3次方的结果,将其分成
2 1 4 3|6 5 8 7 四个部分,发现左上角的部分等于右下角的
3 4 1 2|7 8 5 6 部分,右上角的部分等于左下角的部分,而
4 3 2 1|8 7 6 5 第一行是8名选手,所以,本题的规律就出来了
===== |=======
5 6 7 8|1 2 3 4 而4*4的又可以由2*2的生成,2*2的又可以由
6 5 8 7|2 1 4 3 1*1的生成,所以又是一个典型的分治
7 8 5 6|3 4 1 2 哈哈^_^ ,这下就既找出了规律,又能保证不会超时了
8 7 6 5|4 3 2 1

#include<cstdio>
int a[1029][1029];
int m;
int main()
{scanf("%d",&m);int n=1<<m,k=1,half=1;a[0][0]=1;while(k<=m){for(int i=0;i<half;i++){for(int j=0;j<half;j++){a[i][j+half]=a[i][j]+half;}}for(int i=0;i<half;i++){for(int j=0;j<half;j++){a[i+half][j]=a[i][j+half];a[i+half][j+half]=a[i][j];}}half*=2;k++;}for(int i=0;i<n;i++){for(int j=0;j<n;j++){printf("%d",a[i][j]);if(j!=n-1) {printf(" ");}}printf("\n");}return 0;
}

循环比赛日程表(分治 C++)相关推荐

  1. 1325:【例7.4】 循环比赛日程表——分治

    [题目描述] 设有N个选手进行循环比赛,其中N=2^M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空. [输入] 输入:M. [输出] 输 ...

  2. 不止代码:循环比赛(分治)

    循环比赛日程表(match) [问题描述] 解析 dfs或分治 分治可以不断递归4个小正方形 左上右下为前一半,左下右上后一半 dfs就很无脑了 代码 #include<cstdio> # ...

  3. 【例7.4】 循环比赛日程表

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 1717     通过数: 901 [题目描述] 设有NN个选手进行循环比赛 ...

  4. 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6257     通过数: 3483 [题目描述] 设有N个选手进行循环比赛 ...

  5. 循环比赛日程表(match)

    循环比赛日程表(match) #include<bits/stdc++.h> using namespace std; int m,n,a[1005][1005],h[1005][1005 ...

  6. 1325:【例7.4】 循环比赛日程表

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 8879     通过数: 5227 [题目描述] 设有NN个选手进行循环比 ...

  7. 循环比赛日程表(信息学奥赛一本通-T1325)

    [题目描述] 设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N-1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N-1天,要求每天没有选手轮空. [输入] 输入:M. [输出] 输出 ...

  8. 循环比赛日程表(分治法)

    问题描述: 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次:      (2)每个选手一天只能参赛一次:      (3) ...

  9. 51..分治算法练习:  4378 【Laoguo】循环比赛

    时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 设有n个选手进行循环比赛,其中n=2的m次方,要求每名选手要与其他n ...

最新文章

  1. 复旦大学教授邱锡鹏:NLP 任务中有哪些巧妙的 idea?
  2. mysql中的G标志实现纵向显示
  3. 13.2. Mount partition
  4. 编写高效的C程序与C代码优化
  5. 安装spark集群,并成功运行
  6. [旧博客]Python 第一次
  7. IOS学习笔记二十一(NSDictionary、NSMutableDictionary)
  8. 七大步骤,详解预置算法构建模型的全过程
  9. 苹果计算机磁盘格式,Mac 上“磁盘工具”中可用的文件系统格式
  10. [Swift]LeetCode212. 单词搜索 II | Word Search II
  11. Ubuntu如何更新显卡驱动
  12. 蜗居(露骨争议电视剧《蜗居》...
  13. Postman中tests的基本使用
  14. 如此优秀的你,字节跳动凭什么不给offer?
  15. 向量或矩阵的微分计算
  16. AO3400-ASEMI低功耗长效应管AO3400
  17. 如何在Python中显示图片?
  18. Fluent求解器——亚松弛因子
  19. Netty(一)基础socketchannel,Buffer,selector黏包 半包解决 实战
  20. Android 图片选择库美哭了

热门文章

  1. Arduino学习笔记 类比信号,可变电阻
  2. django 用户授权与许可
  3. 易优cms 模板制作教程
  4. 云筑网认证_大师为你详解云筑网怎样注册账号
  5. 技术前沿与经典文章15:历史上54位伟大物理学家、科学家的专属LOGO(一)
  6. 480P、720P、1080P
  7. 弹性盒子display:flex——justify-content主轴方向对齐方式、align-items交叉轴对齐方式、 flex-direction修改主轴方向、flex-wrap换行
  8. 软件测试实用技术与常用模板:前言
  9. 基于GEE(Google earth engine)的 GIMMS NDVI月合成
  10. idea中同一个包中的类相互引用失败