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. 分布式还是混合式? 谈CDN架构对服务质量的影响

    传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...

  2. Linux内核中SPI/I2c子系统剖析

    Linux内核中,SPI和I2C两个子系统的软件架构是一致的,且Linux内核的驱动模型都以bus,driver,device三种抽象对象为基本元素构建起来.下文的分析将主要用这三种抽象对象的创建过程 ...

  3. MVC ASPX(webForm)视图引擎 &lt;%:%&gt; 与&lt;%=%&gt;的差别

    控制器 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...

  4. QStandardItemModel角色控制及QTreeView加入不同的右键菜单

    1.概述 QTreeView最长用的一个功能就是作为导航栏,像vs里的项目结构树,word的文档结构图,资源管理器的文档结构,等等都是利用树形结构组织的,在前面已经讲述了Qt中使用标准化项目模型QSt ...

  5. C++实现二叉树(转)

    /************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点.构造 ...

  6. 使用JExcel导出excel文件

    package org.aaa.portal.tools; import java.io.File; import java.io.IOException; import java.util.List ...

  7. Android(java)学习笔记212:中文乱码的问题处理(qq登录案例)

    1.我们在之前的笔记中LoginServlet.java中,我们Tomcat服务器回复给客户端的数据是英文的"Login Success","Login Failed&q ...

  8. 第七章----pwm蜂鸣器

    Linux代码的重用: 在头文件中加载即可使用到原来所有的功能,还有动态方式就是一个驱动使用另一个驱动的资源. 对于像蜂鸣器这样的实验,它的内部文件有很多,所有要有很多的源代码以用于妥善管理. 有多个 ...

  9. java读取redis的timeout异常

    http://blog.csdn.net/shuaiokshuai/article/details/23266091 FIFO Fist-in Fisrt-out 先进先出

  10. 关于mvc 分页的 这两个结合着用

    http://www.cnblogs.com/JackFeng/archive/2010/01/25/JackFeng.html http://www.webdiyer.com/mvcpager/de ...