BZOJ 1501 智慧珠游戏
Description

Input
文件中包含初始的盘件描述,一共有10行,第i行有i个字符。如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母。如果第i行的第j个字符是”.”,则表示第i行第j列的格子上没有放零件。输入保证预放的零件已摆放在盘件中。
Output
如果能找到解,向输出文件打印10行,为放完全部12个零件后的布局。其中,第i行应包含i个字符,第i行的第j个字符表示第i行第j列的格子上放的是哪个零件。如果无解,输出单独的一个字符串‘No solution’(不要引号,请注意大小写)。所有的数据保证最多只有一组解。
Sample Input
..
...
....
.....
.....C
...CCC.
EEEHH...
E.HHH....
E.........
Sample Output
BK
BKK
BJKK
JJJDD
GJGDDC
GGGCCCI
EEEHHIIA
ELHHHIAAF
ELLLLIFFFF
HINT
Source
暴搜+打表+卡时大法好,哈哈!!!这题老师居然把他当noip模拟题来考,也是醉了~考完后对着数据调也是一晚上和半上午的。。。
#include<cstdio>
#include<cstdlib>
#include<cstring> using namespace std; int s[][],times;
int mod[][][][],have[],num[]={,,,,,,,,,,,,};
bool use[]; inline void finish()
{
for (int i = ;i <= ;++i)
{
for (int j = ;j <= i;++j)
printf("%c",s[i][j]+'A'-);
putchar('\n');
}
} inline bool okay(int a,int b,int x,int y)
{
int t = num[a],i;
for (i = ;i <= t;++i)
{
int tx = x + mod[a][b][i][];
int ty = y + mod[a][b][i][];
if (tx < || tx > ) return false;
if (ty < || ty > tx) return false;
if (s[tx][ty] != ) return false;
}
return true;
} inline void give(int a,int b,int x,int y)
{
int t = num[a],i;
for (i = ;i <= t;++i)
{
int tx = x + mod[a][b][i][];
int ty = y + mod[a][b][i][];
s[tx][ty] = a;
}
} inline void ready()
{
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; //////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; //////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -; //////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; ///////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -; ////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ; ///////////////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; ////////////////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -; /////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; ////////////////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ; ////////////////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -; /////////////////////////////////////////////////////////
have[] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
mod[][][][] = ; mod[][][][] = -;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
//
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = ;
mod[][][][] = ; mod[][][][] = -;
} inline void next(int,int); inline void dfs(int,int); inline void att(int,int); int main()
{
freopen("1501.in","r",stdin);
freopen("1501.out","w",stdout);
for (int i = ;i <= ;++i)
{
for (int j = ;j <= i;++j)
{
char c= getchar();
if (c == '.') s[i][j] = ;
else s[i][j] = c-'A'+,use[c-'A'+] = true;
}
getchar();
}
ready();
dfs(,);
printf("No solution");
fclose(stdin); fclose(stdout);
return ;
} inline void next(int x,int y)
{
if (y == x)
dfs(x+,);
else dfs(x,y+);
} inline void dfs(int x,int y)
{
if (x > )
{
finish(),exit();
return;
}
if (times > ) return;
times++;
if (s[x][y] == )
att(x,y);
else next(x,y);
} inline void att(int x,int y)
{
int temp[][];
memcpy(temp,s,sizeof(temp));
int i,j;
for (i = ;i>=;--i)
{
if (use[i]) continue;
for (j = ;j <= have[i];++j)
if (okay(i,j,x,y))
{
use[i] = true;
give(i,j,x,y);
next(x,y);
memcpy(s,temp,sizeof(s));
use[i] = false;
}
}
}
BZOJ 1501 智慧珠游戏的更多相关文章
- bzoj 1501: [NOI2005]智慧珠游戏 Dancing Link
1501: [NOI2005]智慧珠游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 190 Solved: 122[Submit][Status] ...
- 【搜索好题】bzoj1501 [NOI2005]智慧珠游戏
bzoj1501 [NOI2005]智慧珠游戏 搜索苟逼题系列. 暴力枚举每一种情况(包括旋转翻转全都考虑在内)然后码出代码. (正解似乎不是这样子的) 那年好像还有平衡树苟逼题维护数列233333心 ...
- 【BZOJ1501】【NOI2005】智慧珠游戏(搜索)
[BZOJ1501][NOI2005]智慧珠游戏(搜索) 题面 我要一改我懒惰的作风 这道题目必须放题面 Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符. ...
- 洛谷 P4205 [NOI2005]智慧珠游戏 DFS
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P4205 [NOI2005]智慧珠游戏 题目描述 智慧 ...
- [BZOJ1501][NOI2005] 智慧珠游戏
Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...
- Luogu P4205 [NOI2005]智慧珠游戏
国内少有的可以练习神仙算法--DLX的好题怎么可以被爆搜埋没呢? 看到这题没有DLX的题解所以写一篇,不过貌似我实现的太弱(构图太慢)所以速度上不是很快. 下面开始讲题,但请保证你要先学会DLX.(d ...
- ios版弹珠游戏源码
这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op> <ignore_js_op&g ...
- bzoj 3991: [SDOI2015]寻宝游戏 虚树 set
目录 题目链接 题解 代码 题目链接 bzoj 3991: [SDOI2015]寻宝游戏 题解 发现每次答案就是把虚树上的路径*2 接在同一关键点上的点的dfs序是相邻的 那么用set动态维护dfs序 ...
- bzoj 3232: 圈地游戏
bzoj 3232: 圈地游戏 01分数规划,就是你要最大化\(\frac{\sum A}{\sum B}\),就二分这个值,\(\frac{\sum A}{\sum B} \geq mid\) \( ...
随机推荐
- 关于GCC的理解——On the understanding of the GCC
GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...
- docker 服务注册
docker 服务注册 etcd docker run -d --name etcd -p 4001:4001 -p 7001:7001 elcolio/etcd
- COMPACT 行记录格式
CREATE TABLE `mytest` ( `t1` varchar() DEFAULT NULL, `t2` varchar() DEFAULT NULL, `t3` ) DEFAULT NUL ...
- 编程基础-msdn编程指南笔记
此博仅为笔记,摘自msdn编程指南文档,链接地址:http://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx 注释:// 单行注释 /* 多行注释*/ ...
- iBatis 的删除一条记录
Student.xml 设置删除参数的类型,可以是一个对象的 <delete id="delStudent" parameterClass="int" & ...
- C# 各种集合
大多数集合都在 System.Collections,System.Collections.Generic两个命名空间. 其中System.Collections.Generic专门用于泛型集合. ...
- Axure RP 8.0正式版下载地址 安装和汉化说明
1.Axure RP和中文包包下载地址 官网地址:http://www.axure.com.cn/3510/ 2.下载完成后安装 3.破解 axure8.0注册码激活码:(亲测可用)用户名:aaa注册 ...
- Express在windows IIS上部署详解
最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...
- IOS学习--UILable使用手册(20150120)
第一步:创建一个UILable对象 UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; 第二步:设置对象的各种属性 ...
- 对 Xcode 菜单选项的详细探索(转)
转自 http://www.cnblogs.com/dsxniubility/p/4983614.html 本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到 ...