ZOJ5833 Tournament(递归打表)
题目链接:传送门
假思路:
根据题意要求,只能按字典序最小的方法安排比赛。
所以第一场必定是1和2比,3和4比。。。。
选手:1 2
对手:2 1
根据要求如果1与2比过赛了,1再与其它的人(不妨设为a)比赛的话,2就必须与(第一场与a比赛的人,不妨设为b)比赛。
因为要求字典序小,所以1应该和a、b中较小者先比赛,再与较大者比赛,那么不妨令a < b,则1、2、a、b比赛时就会是这样安排的:
选手:1 2 a b
对手:2 1 b a
a b 1 2
b a 2 1
因为要求字典序最小,所以a、b应当先与3、4比赛:
选手:1 2 3 4
对手:2 1 4 3
3 4 1 2
4 3 2 1
(然后陈某人脑子一片空白打了个表。。。。验证一下能不能比k轮就交上去了。)
同样地,1已经与2、3、4比过赛了,那么它再碰见a、b、c、d(不妨令a < b < c < d)时,就会因为字典序要求依次与a、b、c、d比赛。(a、b、c、d取到最小,所以对应了5、6、7、8)
选手:1 2 3 4 a b c d
对手:2 1 4 3 b a d c
3 4 1 2 c d a b
4 3 2 1 d c b a
a b c d 1 2 3 4
b a d c 2 1 4 3
c d a b 3 4 1 2
d c b a 4 3 2 1
这样安排首先能保证字典序最小和满足第四个规则,其次也能使得比赛的轮数尽量多(较大的数与前面的数比赛的时间更迟),所以答案就在表里。验证表中的前k行的前n个数是否出现了比n大的数即可判断是否为Impossible。
代码:
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int MAX_N = 1e3 + ; int N, K;
int mat[MAX_N][MAX_N]; void work(int len)
{
if (*len > MAX_N)
return;
for (int i = ; i <= len; i++) {
for (int j = ; j <= len; j++) {
mat[i+len][j] = mat[i][j] + len;
mat[i+len][j+len] = mat[i][j];
mat[i][j+len] = mat[i][j] + len;
}
}
work(*len);
} void init()
{
mat[][] = ; mat[][] = ;
mat[][] = ; mat[][] = ;
work();
} bool check()
{
for (int i = ; i <= K+; i++) {
for (int j = ; j <= N; j++) {
if (mat[i][j] > N) {
return false;
}
}
}
return true;
} int main()
{
init();
int T;
cin >> T;
while (T--) {
scanf("%d%d", &N, &K);
bool ok = check();
if (!ok) {
puts("Impossible");
continue;
}
for (int i = ; i <= K+; i++) {
bool firstprint = true;
for (int j = ; j <= N; j++) {
if (firstprint)
firstprint = false;
else
printf(" ");
printf("%d", mat[i][j]);
}
puts("");
}
}
}
ZOJ5833 Tournament(递归打表)的更多相关文章
- 算法模板——sap网络最大流 3(递归+邻接表)
实现功能:同前 程序还是一如既往的优美,虽然比起邻接矩阵的稍稍长了那么些,不过没关系这是必然,但更重要的一个必然是——速度将是一个质的飞跃^_^(这里面的point指针稍作了些创新——anti指针,这 ...
- 算法模板——sap网络最大流 2(非递归+邻接表)
实现功能:同最大流 1 这里面主要是把前面的邻接矩阵改成了邻接表,相比之下速度大大提高——本人实测,当M=1000000 N=10000 时,暂且不考虑邻接矩阵会不会MLE,新的程序速度快了很多倍(我 ...
- ZOJ 4063 - Tournament - [递归][2018 ACM-ICPC Asia Qingdao Regional Problem F]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4063 Input Output Sample Input 2 3 ...
- Lua非常有用的工具——递归打印表数据
摘要: Lua是一种非常小巧的语言.虽小,但五脏俱全. 在Lua中,我认为最最核心的数据结构就是表.表不仅可用作数组,还可以用作字典.Lua面向对象的实现也是用表实现的. 表对于Lua实在是太重要了! ...
- RS查询报错之递归公用表表达式不包含顶级 UNION ALL运算符
在FM里面涉及模型的时候,修改了物理层的查询SQL如下 select * from TARGET_VISIT_GH where ghksdm in(select dept_id from DIM_BI ...
- T-SQL with关键字 with as 递归循环表
)SET @OrgId = N'901205CA-6C22-4EE7-AE4B-96CC7165D07F'; WITH Childs AS ( SELECT * FROM HROrgRelation ...
- 1.c语言非递归乘法表(帧栈理解)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stdbool.h> 4 5 typedef stru ...
- 公用表表达式 (CTE)、递归、所有子节点、sqlserver
指定临时命名的结果集,这些结果集称为公用表表达式 (CTE).公用表表达式可以包括对自身的引用.这种表达式称为递归公用表表达式. 对于递归公用表达式来说,实现原理也是相同的,同样需要在语句中定义两部分 ...
- 公用表表达式 (CTE)、递归
指定临时命名的结果集,这些结果集称为公用表表达式 (CTE).公用表表达式可以包括对自身的引用.这种表达式称为递归公用表表达式. 对于递归公用表达式来说,实现原理也是相同的,同样需要在语句中定义两部分 ...
随机推荐
- Qt绘制字体并获取文本宽度
参考资料: https://blog.csdn.net/liang19890820/article/details/51227894 QString text("abc");QPa ...
- swagger访问api, TypeError: Failed to fetch
用swagger访问https://localhost:44360/api/ads/1, 得到的结果是 TypeError: Failed to fetch.一开始以为是后端代码问题,检查了好久,才发 ...
- mac 安装Seaslog扩展及SeasLogger应用
首先下载 http://pecl.php.net/package/SeasLog 下载最新解压 cd /SeasLog-2.0.2/SeasLog-2.0.2/ phpize ./configure ...
- linux文件管理 文件权限
文件权限介绍 [root@ssgao1987 ~]# ls -l 总用量 24 -rw-------. 1 root root 1161 7月 8 10:30 anaconda-ks.cfg - ...
- 尚学堂java 参考答案 第七章
本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.ACD 解析:B:java中左边不能直接直接指定长度,和C语言不一样 2.B 3.C 解析:B各行分 ...
- RegDataToDataType
function RegDataToDataType(Value: TRegDataType): Integer; begin case Value of rdString: Result := RE ...
- caffe,Inception v2 Check failed: top_shape[j] == bottom[i]->shape(j)
使用Caffe 跑 Google 的Inception V2 对输入图片的shape有要求,某些shape输进去可能会报错. Inception model中有从conv和pooling层concat ...
- Mysql中contact、group_concat、concat_ws、repeat
一.CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22',' ...
- 深入理解java虚拟机---jdk8新特性(二)
1.jdk8新特性 1.新特性 2.lambda函数表达式的作用 A: 替换内部类 B:对集合的操作并行化
- DevExpress WinForms使用教程:WinForms Fluent Design和Acrylic Effects
在先前的版本发布中,宣布支持Fluent Design Form和Acrylic effects——旨在复制Microsoft下一代UI metaphor的新功能.本文主要介绍如何实现此功能,并明确说 ...