UOJ 225 [UR #15]奥林匹克五子棋
来源:互联网 发布:中国大数据专家委员会 编辑:程序博客网 时间:2024/05/22 17:48
构造。
除了一些n=1,m=1,k=1……之类的特殊情况外,我们能够保证的最优解肯定是这样的:
OXOXO
OXOXO
XOXOX
XOXOX
OXOXO
那么k>2肯定都是有解。
然后判掉特殊情况,把这种图暴力跑出来输出就好了- -,一些细节要注意好
UOJ比赛出这种题真的好吗
#include<cstdio>#define N 550int map[N][N], n, m, k;void solve(int &p, int k){ int x=p/1000, y=p%1000; for(int j = y+1; j <= m; j++) if(map[x][j]==k) { p=x*1000+j; return; } for(int i = x+1;i <= n; i++) for(int j = 1; j <= m; j++) if(map[i][j]==k) { p=i*1000+j; return; }}int main(){ scanf("%d%d%d",&n,&m,&k); if(k==1) { printf("-1\n"); return 0; } if(k==2 && n>=2 && m>=2) { printf("-1\n"); return 0; } if(n==1) { for(int i = 1; i <= m; i++) printf("%d %d\n",1,i); return 0; } if(m==1) { for(int i = 1; i <= n; i++) printf("%d %d\n",i,1); return 0; } if(n&1) for(int i = 1; i <= 505; i++) for(int j = 1; j <= 505; j++) if((i-1)%4<=1) { if(j&1)map[i][j]=1; else map[i][j]=-1; } else { if(j&1)map[i][j]=-1; else map[i][j]=1; } else for(int i = 1; i <= 505; i++) for(int j = 1; j <= 505; j++) if(i%4<=1) { if(j&1)map[i][j]=1; else map[i][j]=-1; } else { if(j&1)map[i][j]=-1; else map[i][j]=1; } int px=1001, py=1002; for(int i = 1, ii = n*m; i <= ii; i++) { if(i&1) { printf("%d %d\n",px/1000,px%1000); solve(px,1); } else { printf("%d %d\n",py/1000,py%1000); solve(py,-1); } }}
1 0
- UOJ 225 [UR #15]奥林匹克五子棋
- uoj #152. 【UR #10】汉诺塔
- UOJ 22 [UR #1]外星人
- UOJ#192. 【UR #14】最强跳蚤
- UOJ #31. 【UR #2】猪猪侠再战括号序列
- UOJ #74. 【UR #6】破解密码
- UOJ #60. 【UR #5】怎样提高智商
- UOJ #82. 【UR #7】水题生成器
- UOJ #118. 【UR #8】赴京赶考
- UOJ 133 [UR #9]电路手动分析
- UOJ #242. 【UR #16】破坏蛋糕
- UOJ 21 [UR #1]缩进优化
- UOJ 31 [UR #2]猪猪侠再战括号序列
- UOJ 48 [UR #3]核聚变反应强度
- UOJ 49 [UR #3]铀仓库
- UOJ 82 [UR #7]水题生成器
- 【UOJ】#241. 【UR #16】破坏发射台
- 【UOJ】#242. 【UR #16】破坏蛋糕
- Java学习Gof23之创建者模式第2篇
- 15.1.6
- 面试指南
- 经典查询练手第三篇(不懂装懂,永世饭桶!)
- linux下文件访问时间、修改时间、更改时间
- UOJ 225 [UR #15]奥林匹克五子棋
- maven项目编译没有calss文件,和找不到类,maven导入报错?
- 线程的优先级
- C++ 获取OEM String
- 15.1
- Git常用命令
- 经典查询练手第四篇(不懂装懂,永世饭桶!)
- Singleton设计模式简介
- Linux GCC常用命令