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. 关于GCC的理解——On the understanding of the GCC

    GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...

  2. docker 服务注册

    docker 服务注册 etcd docker run -d --name etcd -p 4001:4001 -p 7001:7001 elcolio/etcd

  3. COMPACT 行记录格式

    CREATE TABLE `mytest` ( `t1` varchar() DEFAULT NULL, `t2` varchar() DEFAULT NULL, `t3` ) DEFAULT NUL ...

  4. 编程基础-msdn编程指南笔记

    此博仅为笔记,摘自msdn编程指南文档,链接地址:http://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx 注释:// 单行注释 /* 多行注释*/ ...

  5. iBatis 的删除一条记录

    Student.xml 设置删除参数的类型,可以是一个对象的 <delete id="delStudent" parameterClass="int" & ...

  6. C# 各种集合

    大多数集合都在  System.Collections,System.Collections.Generic两个命名空间. 其中System.Collections.Generic专门用于泛型集合. ...

  7. Axure RP 8.0正式版下载地址 安装和汉化说明

    1.Axure RP和中文包包下载地址 官网地址:http://www.axure.com.cn/3510/ 2.下载完成后安装 3.破解 axure8.0注册码激活码:(亲测可用)用户名:aaa注册 ...

  8. Express在windows IIS上部署详解

    最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...

  9. IOS学习--UILable使用手册(20150120)

    第一步:创建一个UILable对象 UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; 第二步:设置对象的各种属性 ...

  10. 对 Xcode 菜单选项的详细探索(转)

    转自 http://www.cnblogs.com/dsxniubility/p/4983614.html 本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到 ...