循环比赛日程表(分治 C++)
循环比赛日程表
总时间限制: 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++)相关推荐
- 1325:【例7.4】 循环比赛日程表——分治
[题目描述] 设有N个选手进行循环比赛,其中N=2^M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空. [输入] 输入:M. [输出] 输 ...
- 不止代码:循环比赛(分治)
循环比赛日程表(match) [问题描述] 解析 dfs或分治 分治可以不断递归4个小正方形 左上右下为前一半,左下右上后一半 dfs就很无脑了 代码 #include<cstdio> # ...
- 【例7.4】 循环比赛日程表
1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1717 通过数: 901 [题目描述] 设有NN个选手进行循环比赛 ...
- 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)
1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6257 通过数: 3483 [题目描述] 设有N个选手进行循环比赛 ...
- 循环比赛日程表(match)
循环比赛日程表(match) #include<bits/stdc++.h> using namespace std; int m,n,a[1005][1005],h[1005][1005 ...
- 1325:【例7.4】 循环比赛日程表
1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 8879 通过数: 5227 [题目描述] 设有NN个选手进行循环比 ...
- 循环比赛日程表(信息学奥赛一本通-T1325)
[题目描述] 设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N-1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N-1天,要求每天没有选手轮空. [输入] 输入:M. [输出] 输出 ...
- 循环比赛日程表(分治法)
问题描述: 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: (2)每个选手一天只能参赛一次: (3) ...
- 51..分治算法练习: 4378 【Laoguo】循环比赛
时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 设有n个选手进行循环比赛,其中n=2的m次方,要求每名选手要与其他n ...
最新文章
- 复旦大学教授邱锡鹏:NLP 任务中有哪些巧妙的 idea?
- mysql中的G标志实现纵向显示
- 13.2. Mount partition
- 编写高效的C程序与C代码优化
- 安装spark集群,并成功运行
- [旧博客]Python 第一次
- IOS学习笔记二十一(NSDictionary、NSMutableDictionary)
- 七大步骤,详解预置算法构建模型的全过程
- 苹果计算机磁盘格式,Mac 上“磁盘工具”中可用的文件系统格式
- [Swift]LeetCode212. 单词搜索 II | Word Search II
- Ubuntu如何更新显卡驱动
- 蜗居(露骨争议电视剧《蜗居》...
- Postman中tests的基本使用
- 如此优秀的你,字节跳动凭什么不给offer?
- 向量或矩阵的微分计算
- AO3400-ASEMI低功耗长效应管AO3400
- 如何在Python中显示图片?
- Fluent求解器——亚松弛因子
- Netty(一)基础socketchannel,Buffer,selector黏包 半包解决 实战
- Android 图片选择库美哭了
热门文章
- Arduino学习笔记 类比信号,可变电阻
- django 用户授权与许可
- 易优cms 模板制作教程
- 云筑网认证_大师为你详解云筑网怎样注册账号
- 技术前沿与经典文章15:历史上54位伟大物理学家、科学家的专属LOGO(一)
- 480P、720P、1080P
- 弹性盒子display:flex——justify-content主轴方向对齐方式、align-items交叉轴对齐方式、 flex-direction修改主轴方向、flex-wrap换行
- 软件测试实用技术与常用模板:前言
- 基于GEE(Google earth engine)的 GIMMS NDVI月合成
- idea中同一个包中的类相互引用失败