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

B
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 智慧珠游戏的更多相关文章

  1. bzoj 1501: [NOI2005]智慧珠游戏 Dancing Link

    1501: [NOI2005]智慧珠游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 190  Solved: 122[Submit][Status] ...

  2. 【搜索好题】bzoj1501 [NOI2005]智慧珠游戏

    bzoj1501 [NOI2005]智慧珠游戏 搜索苟逼题系列. 暴力枚举每一种情况(包括旋转翻转全都考虑在内)然后码出代码. (正解似乎不是这样子的) 那年好像还有平衡树苟逼题维护数列233333心 ...

  3. 【BZOJ1501】【NOI2005】智慧珠游戏(搜索)

    [BZOJ1501][NOI2005]智慧珠游戏(搜索) 题面 我要一改我懒惰的作风 这道题目必须放题面 Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符. ...

  4. 洛谷 P4205 [NOI2005]智慧珠游戏 DFS

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P4205 [NOI2005]智慧珠游戏 题目描述 智慧 ...

  5. [BZOJ1501][NOI2005] 智慧珠游戏

    Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...

  6. Luogu P4205 [NOI2005]智慧珠游戏

    国内少有的可以练习神仙算法--DLX的好题怎么可以被爆搜埋没呢? 看到这题没有DLX的题解所以写一篇,不过貌似我实现的太弱(构图太慢)所以速度上不是很快. 下面开始讲题,但请保证你要先学会DLX.(d ...

  7. ios版弹珠游戏源码

    这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op>     <ignore_js_op&g ...

  8. bzoj 3991: [SDOI2015]寻宝游戏 虚树 set

    目录 题目链接 题解 代码 题目链接 bzoj 3991: [SDOI2015]寻宝游戏 题解 发现每次答案就是把虚树上的路径*2 接在同一关键点上的点的dfs序是相邻的 那么用set动态维护dfs序 ...

  9. bzoj 3232: 圈地游戏

    bzoj 3232: 圈地游戏 01分数规划,就是你要最大化\(\frac{\sum A}{\sum B}\),就二分这个值,\(\frac{\sum A}{\sum B} \geq mid\) \( ...

随机推荐

  1. Java8新特性

    Java8新特性 Java8主要的新特性涵盖:函数式接口.Lambda 表达式.集合的流式操作.注解的更新.安全性的增强.IO\NIO 的改进.完善的全球化功能等. 1.函数式接口 Java 8 引入 ...

  2. AlertDialog.Builder setCancelable用法

    AlertDialog.Builder的setCancelable public AlertDialog.Builder setCancelable (boolean cancelable) Sinc ...

  3. 《sqlite权威指南》读书笔记 (一)

    一 常量 字符串常量   (使用单引号括住.如果常量中有单引号,使用两个单引号来表示.大小写敏感) 数字常量 二进制常量 二 关键字 关键字大小写不敏感 三 注释 单行注释使用 --XXXXXXX 多 ...

  4. YouTube CEO关于工作和生活平衡的完美回答

    原文地址:http://www.businessinsider.com/youtubes-ceo-response-to-work-life-balance-2015-7 译文: 在2015年Aspe ...

  5. ZOJ 3898 - Stean 积分

    有一个陶罐,陶罐是由函数Y=2+cosX,截取x=Z1到x=Z2段后,形成的旋转体,陶罐只有底x=Z1,没有盖子. 问陶罐能乘多少的水(体积),以及它的表面积 体积还是比较好求的,直接用旋转体体积公式 ...

  6. 各大浏览器CSS Hack收集

    各大浏览器CSS Hack收集  >>>>>>>>>>>>>>>>>>>>> ...

  7. codevs 3119 高精度练习之大整数开根 (各种高精+压位)

    /* codevs 3119 高精度练习之大整数开根 (各种高精+压位) 二分答案 然后高精判重 打了一个多小时..... 最后还超时了...压位就好了 测试点#1.in 结果:AC 内存使用量: 2 ...

  8. Svg图片在asp网站上的使用

    最近需要做一个动态的根据后台的返回数据而动态显示的导航图,然后我就采用了jquery+ajax+SVG矢量图来实现这个功能. 首先,客户给了个ai的矢量图,我对这一块不懂就找以前同事帮我转成了svg图 ...

  9. thread跟Runnable实现多线程

    //两种实现方式的区别和联系: //在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处: //避免点继承的局限,一个类可以继承 ...

  10. 【原】ios tableViewCell 自适应高度

    原文:http://www.cnblogs.com/A--G/p/4819051.html 前言:之前在做一个类似微博的小需求时候,用table view实现了微博文字和图片等等的基本展示,由于文字和 ...