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 ...
随机推荐
- Navicat Premium 12破解(转载)
一.Navicat Premium 12下载 Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL.Oracle等多种数据库,可以快速轻松地创建.管理和维护数据库. Na ...
- KVM中的网络简介(qemu-kvm)
emu-kvm主要向客户机提供了如下4种不同模式的网络: 1)基于网桥(bridge)的虚拟网卡 2)基于NAT(Network Addresss Translation)的虚拟网络 3)QEMU内置 ...
- linux 部署nginx作为反向代理入口的内核参数/etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enable ...
- BeautifulSoup与aiohttp的简单应用-爬取《网上中华五千年》音频
香港电台的节目素质都比较不错,其中有个<中华五千年>的节目是以情景剧与旁白的形式来展示历史故事,由传说时代一直到民国,1983年首播至2000年,非常长寿的一个节目.网上能找到版本声音非常 ...
- UVa 12118 检查员的难题 (dfs判连通, 构造欧拉通路)
题意: 分析: 欧拉通路:图连通:图中只有0个或2个度为奇数的结点 这题我们只需要判断选择的边构成多少个联通块, 再记录全部联通块一共有多少个奇度顶点. 然后我们在联通块中连线, 每次连接两个联通块就 ...
- [NOI2001] 炮兵阵地 (状压Dp经典例题)
如果您的电脑比较优秀能在 1sec 内跑过 2^1000 的时间复杂度,不妨你可以尝试一下,其实实际时间复杂度远远少于 2^1000,作为骗分不错的选择QAQ,然后我们来分析一下正解: 很显然此题是一 ...
- laravel(4.2) +Zizaco
操作步骤:https://github.com/Zizaco/entrust/tree/1.0 这篇博客说的蛮详细的:http://blog.boolw.com/?p=241 简化后的步骤 1.在根项 ...
- RobotFramework:切换页面和Frame框架
切换页面主要有以下两种情况 在浏览器上打开多个窗口(Windows),在窗口内切换 打开多个浏览器(Browser),在多个浏览器内切换 1. 切换窗口 该操作适用于:打开两(多)个窗口页面,在打开的 ...
- struts2拦截器加自定义注解实现权限控制
https://blog.csdn.net/paul342/article/details/51436565 今天结合Java的Annotation和Struts2进行注解拦截器权限控制. 功能需求: ...
- CSUOJ 1256 天朝的单行道
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1256 题目大意: 在另一个平行宇宙中,有一个神奇的国度名叫天朝.天朝一共有N个城 ...