bzoj3109【CQOI2013】新数独
3109: [cqoi2013]新数独
Time Limit: 10 Sec Memory Limit: 128 MB id=3109" style="color:blue; text-decoration:none">Discuss
Submit: 365 Solved: 229
[Submit][Status][
Description
.jpg)
Input
第奇数行包括左右方向的符号(<和>),第偶数行包括上下方向的符号(^和v)。
Output
输入保证解惟一。
Sample Input
v v ^ ^ v v ^ ^ ^
< < > < > <
^ ^ ^ v ^ ^ ^ v v
< < < < > >
> < > > > >
v ^ ^ ^ ^ v v v ^
> > > > < >
v v ^ v ^ v ^ v ^
> < < > > >
< < < < > <
v ^ v v v v ^ ^ v
< > > < < >
^ v v v ^ v ^ v v
< > < > < >
Sample Output
2 3 7 8 1 5 6 4 9
5 6 8 2 4 9 7 3 1
9 1 3 6 5 4 8 7 2
8 5 4 9 7 2 1 6 3
7 2 6 3 8 1 9 5 4
3 4 9 5 6 8 2 1 7
1 8 5 4 2 7 3 9 6
6 7 2 1 9 3 4 8 5
dfs的剪枝优化,读入有点麻烦,细心就好了。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define HK_reporter main
using namespace std;
int a[10][10],fh[10][10],fl[10][10];
bool flag,vsth[10][10],vstl[10][10],vst[10][10];
inline bool judge(char ch)
{
return ch=='<'||ch=='>'||ch=='v'||ch=='^';
}
inline void readh(int x)
{
char ch;
F(i,1,6)
{
ch=getchar();
while (!judge(ch)) ch=getchar();
fh[x][(i-1)/2+i]=(ch=='>')?1:0;
}
}
inline void readl(int x)
{
char ch;
F(i,1,9)
{
ch=getchar();
while (!judge(ch)) ch=getchar();
fl[x][i]=(ch=='v')?1:0;
}
}
inline void pre()
{
memset(fh,-1,sizeof(fh));
memset(fl,-1,sizeof(fl));
F(i,1,3)
{
readh((i-1)*3+1);
readl((i-1)*3+1);
readh((i-1)*3+2);
readl((i-1)*3+2);
readh((i-1)*3+3);
}
}
inline int num(int x,int y)
{
return (x-1)/3*3+(y-1)/3+1;
}
inline void dfs(int x,int y)
{
if (y>9) x++,y=1;
if (x>9)
{
F(i,1,9)
{
F(j,1,8) printf("%d ",a[i][j]);
printf("%d\n",a[i][9]);
}
flag=true;
return;
}
F(i,1,9) if (!vsth[x][i]&&!vstl[y][i]&&!vst[num(x,y)][i])
{
if (fl[x-1][y]==0&&a[x-1][y]>=i) continue;
if (fl[x-1][y]==1&&a[x-1][y]<=i) continue;
if (fh[x][y-1]==0&&a[x][y-1]>=i) continue;
if (fh[x][y-1]==1&&a[x][y-1]<=i) continue;
vsth[x][i]=vstl[y][i]=vst[num(x,y)][i]=true;
a[x][y]=i;
dfs(x,y+1);
if (flag) return;
vsth[x][i]=vstl[y][i]=vst[num(x,y)][i]=false;
}
}
int HK_reporter()
{
pre();
dfs(1,1);
return 0;
}
bzoj3109【CQOI2013】新数独的更多相关文章
- BZOJ3109: [cqoi2013]新数独
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3109 搜索一遍.读入注意一下.. #include<cstring> #inclu ...
- 【搜索】bzoj3109 [cqoi2013]新数独
搜索,没什么好说的.要注意读入. Code: #include<cstdio> #include<cstdlib> using namespace std; ][]= {{,, ...
- 3109. [CQOI2013]新数独【DFS】
Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行 ...
- B3109 [cqoi2013]新数独 搜索dfs
就是基于普通数独上的一点变形,然后就没什么了,普通数独就是进行一边dfs就行了. 题干: 题目描述 输入格式 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第 ...
- CQOI2013 新数独
传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法. 这题最恶心的是读入.现学了一招判断点在哪个块 ...
- bzoj 3109: [cqoi2013]新数独
#include<cstdio> #include<iostream> using namespace std; ][],li[][],xi[][],a[][],bh[][], ...
- bzoj 3109: [cqoi2013]新数独【dfs】
按3x3的小块dfs,填数的时候直接满足所有条件即可 #include<iostream> #include<cstdio> #include<cstring> u ...
- BZOJ3105: [cqoi2013]新Nim游戏 博弈论+线性基
一个原来写的题. 既然最后是nim游戏,且玩家是先手,则希望第二回合结束后是一个异或和不为0的局面,这样才能必胜. 所以思考一下我们要在第一回合留下线性基 然后就是求线性基,因为要取走的最少,所以排一 ...
- BZOJ3105: [cqoi2013]新Nim游戏
题解: 线性基?类似于向量上的基底. 此题题解戳这里:http://blog.csdn.net/wyfcyx_forever/article/details/39477673 代码: #include ...
随机推荐
- LINUX:关于Redis集群的节点分配
文章来源:http://www.cnblogs.com/hello-tl/p/7808268.html 根据上述 Redis集群搭建:http://www.cnblogs.com/hello-tl/ ...
- 初识Pyhon
如果你的系统安装了这两个版本,请使用Python 3 如果没有安装Python,请安装Python 3 主要介绍在windows 64位操作系统上安装Python 3 1. 安装Python 首先,检 ...
- JQuery,CSS的小理解
*一个按钮可以在css里面设计样式(定义长宽高,位置),在jsp里面也有部分,通过jQuery定义function()及点击后的动作 *jQuery就是封装好javascript(js代码)的一系列动 ...
- CSS3 pointer-events:none 让你摆脱事件的烦恼
以前没遇到这个属性,在一个偶然的博文下发现该属性真的好用,你是否遇到过写鼠标移入显示文本的效果时,鼠标在元素内的每一次移动都会造成要显示文本的闪烁或是突然的消失?只要在被控制的元素中加上这个属性完美解 ...
- Haproxy的安装与配置
一.Haproxy概念 Haproxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.Haproxy特别适用于那些负载特大的web站点,这 ...
- vim 系列
http://blog.csdn.net/laogaoav/article/details/17370269 非常不错
- hdu 4539
#include<stdio.h> #include<string.h> ]; int s]; int main() { int i,j,n,m; int ch; while( ...
- bzoj 1432 [ZJOI2009]Function 思想
[bzoj1432][ZJOI2009]Function Description Input 一行两个整数n; k. Output 一行一个整数,表示n 个函数第k 层最少能由多少段组成. Sampl ...
- BZOJ1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害
n<=3000个点m<=20000条无向边的图,有p<=n个出发点,每个出发点都不可拆,现拆一些点使每个出发点都不能到达点1,求最小点数. 简单的最小割.每个点拆成两个x和y,无向边 ...
- 《effective C++》:条款37——绝不重新定义继承而来的缺省参数值
引子: 阿里的一道题: #include <IOSTREAM> using namespace std; class A{ public: ) { cout<<"a~ ...