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 ...
随机推荐
- python基础知识08-类定义、属性、初始化和析构
1.类的定义 class 类 是独立存放变量(属性/方法)的一个空间. 每个实例都是一个独立的变量空间.不同实例之间的空间互相不可见. 一个实例的特征,就是属性. 定义在类中的私有属性也可以被子类继承 ...
- K8S部署
k8S部署 柯穴上网 安装openvpn来获取docker镜像(不是本文重点不做详述) 软件包安装 1 关闭iptables,禁用firewalld,关闭selinux 2 配置yum仓库(使用阿里云 ...
- xtu read problem training 3 A - The Child and Homework
The Child and Homework Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on Code ...
- PTA 04-树6 Complete Binary Search Tree (30分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/669 5-7 Complete Binary Search Tree (30分) A ...
- bzoj 2337 高斯消元+概率DP
题目大意: 每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望 这道题直接去求数学期望的DP会导致很难列出多元方程组 我们可以考虑每一个二进制位从1走到N的平均 ...
- [POJ2443]Set Operation(bitset)
传送门 题意:给出n个集合(n<=1000),每个集合中最多有10000个数,每个数的范围为1~10000,给出q次询问(q<=200000),每次给出两个数u,v判断是否有一个集合中同时 ...
- BMP格式,转载
BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式.由于它可以不作任何变换地保存图像 ...
- as3 二维数组的定义
大家都知道as3里面是不能直接定义多维数组 所以不能直接用arr[2][3]这样的方法来获取数组里面的值.如何才能创立多维数组了? 方法如下先定义一个数组 var MapData:Array=new ...
- codeforces 938F(dp+高维前缀和)
题意: 给一个长度为n的字符串,定义$k=\floor{log_2 n}$ 一共k轮操作,第i次操作要删除当前字符串恰好长度为$2^{i-1}$的子串 问最后剩余的字符串字典序最小是多少? 分析: 首 ...
- java基础语法——方法,static关键字
一:方法: 1.什么是方法: 通俗地讲,方法就是行为.它是完成特定功能的代码块能执行一个功能.它包含于类和对象中. 2.为什么要有方法: *提高代码的复用性. *提高效率 *利于程序维护 3.命名规则 ...