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\) \( ...
随机推荐
- hadoop实例
一篇讲得很好的hadoop实例,非常适合初学者学习hadoop. 本文转载自:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.ht ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...
- node.js 安装
http://my.oschina.net/zhangdapeng89/blog/52793 windows 自带的 ims文件安装后 有 安装npm 点击bat文件可自动安装 npm 1安装 nod ...
- Bash常用快捷键
快捷键 作用 Ctrl+A 把光标移动到命令行开头,如果我们输入的命令过长,想要把光标移动到命令行开头时使用 Ctrl+E 把光标移动到命令行结尾 Ctrl+C 强制终止当前的命令 Ctrl+L 清屏 ...
- 脚本动态监控input
Jquery $('input').bind('input propertychange', function() { //进行相关操作 }); JS if(isIE) { document.getE ...
- Sqlserver通过链接服务器访问Oracle
工作中遇到的情况,win 7 64位操作系统的就安装64位的oracle 客户端,然后重启sql service服务后再创建sql 链接服务器.关于如何创建链接服务器请查看下面的大神的链接: http ...
- switch语法之PHP
$a = 100; switch ($a) { case 100: echo '满分'; break; case $a >=60: echo '及格'; break; }
- 在window系统下配置login.sql
在window系统下配置login.sql 他的位置是登录用户的文件夹,我的win7系统位置是: C:\Users\Administrator 我的login.sql下载地址: http://file ...
- 【BZOJ1483】【链表启发式合并】梦幻布丁
Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input 第 ...
- 不使用ASP.NET服务器端控件(包括form表单不加runat="server")来触发.cs里的事件(方法),(适用于有代码洁癖者)。
很多时候,我们使用服务器端控件写出的代码,会给我们生成一些很多我们看不懂的代码(初学者),但是有时候我们并不需要这些代码(业务需求不同),对于生成的一些代码感到多余.所以我就开始想,有没有一种可能:不 ...