ACM/ICPC 14 北京站现场赛 B
来源:互联网 发布:饥荒linux版 编辑:程序博客网 时间:2024/05/04 07:33
// dfs回溯 + 估价函数
#include<cstdio> #include<iostream> #include<cstring> #include<string.h> #include<algorithm> using namespace std; const int maxn = 5 + 5; int res[maxn][maxn]; int cnt[maxn * maxn]; int n, m, k; int flog; int ok(int i, int j, int kk) { if(i-1 >= 1) if(res[i-1][j] != -1 && res[i-1][j] == kk) return 0; if(i+1 <= n) if(res[i+1][j] != -1 && res[i+1][j] == kk) return 0; if(j-1 >= 1) if(res[i][j-1] != -1 && res[i][j-1] == kk) return 0; if(j+1 <= m) if(res[i][j+1] != -1 && res[i][j+1] == kk) return 0; return 1; } void dfs(int i, int j, int v) { if(i==n && j==m) flog = true; if(flog) return ; for(int i = 1; i <= k; ++i) if((v+1)/2 < cnt[i]) return ; for(int kk = 1; kk <= k; ++kk) { if(!cnt[kk]) continue; if(j==m) { if(ok(i+1, 1, kk)) { --cnt[kk]; res[i+1][1] = kk; dfs(i+1, 1, v-1); if(flog) return ; res[i+1][1] = -1; ++cnt[kk]; } } else { if(ok(i, j+1, kk)) { --cnt[kk]; res[i][j+1] = kk; dfs(i, j+1, v-1); if(flog) return ; res[i][j+1] = -1; ++cnt[kk]; } } } return ; } int main() { int T; scanf("%d", &T); int kase = 0; while(T--) { printf("Case #%d:\n", ++kase); scanf("%d%d%d", &n, &m, &k); memset(cnt,0,sizeof(cnt)); memset(res,-1,sizeof(res)); for(int i = 1; i <= k; ++i) scanf("%d", &cnt[i]); flog = false; dfs(1, 0, n*m); if(flog) { cout << "YES" << endl; for(int i = 1; i <= n; ++i) { for(int j = 1; j <= m; ++j) { if(j==1) printf("%d", res[i][j]); else printf(" %d", res[i][j]); } printf("\n"); } } else cout << "NO" << endl; } return 0; }
0 0
- ACM/ICPC 14 北京站现场赛 B
- 2016ACM/ICPC亚洲区北京站现场赛直播地址
- SDKD Summer Team Contest X ACM/ICPC 14 北京站现场赛
- 2014ACM/ICPC亚洲区北京站现场赛(HDU 5111,5115,5119,5120,5122)
- hdu 5122 K.Bro Sorting [ACM/ICPC 2014 北京站现场赛]
- 2011 ACM/ICPC 北京现场赛 B HouYi's secret
- HDU 5112 2014ICPC北京站现场赛 A Curious Matt
- HDU 5122 K.Bro Sorting 2014ICPC 北京站现场赛
- 2014 ACM/ICPC 北京站 总结
- 2012 ICPC/ACM 成都现场赛 Candy
- ACM-ICPC现场赛管理员指南
- 2015 ACM/ICPC 长春现场赛
- 2015 ACM/ICPC 沈阳现场赛
- 现场赛经验 by CQU ACM/ICPC
- HDU4432-第37届ACM/ICPC天津现场赛B题
- HDU 5510 2015ACM-ICPC沈阳赛区现场赛B题
- hdu 5949 Relative atomic mass 2016ACM/ICPC沈阳赛区现场赛B
- 2014ACM/ICPC亚洲区北京站-重现赛
- android的顶部操作栏
- iOS 定位 点击设置->隐私->定位 闪退的问题
- iOS Sqlite 增删改查基本操作
- HIbernate注解详解
- linux命令--------------netstat
- ACM/ICPC 14 北京站现场赛 B
- 软工视频第一章——开门见山
- Ajax核心5步
- iOS调试——基础(三)
- EL表达式 (详解)
- Android FoldingLayout 折叠布局 原理及实现(一)
- pig脚本总结
- 前端实现标签切换跳转
- 数据库三范式大总结