https://www.luogu.org/problemnew/show/P1219

一开始朴素检查对角线就TLE了,给对角线编码之后压缩了13倍时间?

找了很久的bug居然是&&写成了&&&,我喷了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long bool cused[];
bool zxused[];
bool yxused[]; //bool g[14][14]; int ans[];
int atop=; int n;
int cnt=; inline int get_zx_id(int r,int c){
//int ans=r-c+n;
//printf("r=%d c=%d zid=%d\n",r,c,ans);
return r-c+n;
} inline int get_yx_id(int r,int c){
int rc=n+-c;
//int ans=r-rc+n;
//printf("r=%d c=%d yid=%d\n",r,c,ans);
return r-rc+n;
} void dfs(int r){
if(r>n){
cnt++;
if(cnt<=){
for(int i=;i<atop;i++){
printf("%d%c",ans[i]," \n"[i==atop-]);
}
}
} for(int j=;j<=n;j++){
if(cused[j]==&&zxused[get_zx_id(r,j)]==&&yxused[get_yx_id(r,j)]==){
cused[j]=;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
//g[r][j]=1;
//ans[atop++]=r;
ans[atop++]=j;
dfs(r+);
atop-=;
//g[r][j]=0;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
cused[j]=;
}
}
} int main(){
scanf("%d",&n); /*for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%2d ",get_zx_id(i,j));
}
printf("\n");
} printf("\n"); for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%2d ",get_yx_id(i,j));
}
printf("\n");
} printf("\n");*/ int r=;
for(int j=;j<=n;j++){
cused[j]=;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
ans[atop++]=j;
dfs(r+);
atop-=;
yxused[get_yx_id(r,j)]=;
zxused[get_zx_id(r,j)]=;
cused[j]=;
}
printf("%d\n",cnt);
}

洛谷 - P1219 - 八皇后 - dfs的更多相关文章

  1. 洛谷 P1219 八皇后【经典DFS,温习搜索】

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  2. 洛谷 P1219八皇后

    把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...

  3. 洛谷P1219 八皇后【dfs】

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  4. 洛谷 p1219 八皇后

    刚参加完蓝桥杯 弱鸡错了好几道..回头一看确实不难 写起来还是挺慢的 于是开始了刷题的道路 蓝桥杯又名搜索杯 暴力杯...于是先从dfs刷起 八皇后是很经典的dfs问题 洛谷的这道题是这样的 上面的布 ...

  5. 【洛谷P1219 八皇后】

    参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...

  6. 洛谷 P1219 八皇后题解

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  7. 洛谷P1219 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  8. 洛谷P1219 八皇后 我。。。。。。

    代码1    (学弟版) #include<bits/stdc++.h>using namespace std;int l[15];bool s[15];                  ...

  9. 洛谷P2105 K皇后

    To 洛谷.2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的 ...

随机推荐

  1. BUPT复试专题—字符串转换(2013计院)

    题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串.现在给你一个仅由小写字母组成的字符串, ...

  2. ubuntu 14.04安装nodejs

    http://stackoverflow.com/questions/32902699/cannot-install-ember-on-ubuntu-1404/33495134

  3. Codeforces Round #178 (Div. 2) B .Shaass and Bookshelf

    Shaass has n books. He wants to make a bookshelf for all his books. He wants the bookshelf's dimensi ...

  4. 用 centrifugo 搭建 消息推送服务器 docker + rancher 搭建

    关于消息推送服务器 目前有很多第三方的开放成熟的推送服务.鉴于项目需要 我们项目需要自己搭建 自己的推送服务. 我们的推送应用场景 聊天消息 项目内部消息提醒 移动设备接受消息 应用到的相关软件工具知 ...

  5. [UnityShader3]溶解与重现效果

    參考链接:http://www.cnblogs.com/Esfog/p/DissolveShader.html 效果图: 从颜色变化来说,有三种,一种是纹理颜色.一种是纹理与黑边的混合颜色,一种是透明 ...

  6. 基于bootstrap_网站汇总页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. error at ::0 can&#39;t find referenced pointcut pointCutName 错误解决方法

    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: publi ...

  8. ArcGIS 10.3 for Server新特性介绍

    ArcGIS10.3的正式版立即在美国Esri全球用户大会推出.中国的正式发行时间预计在Esri中国的用户大会.以下就将用户比較关心的ArcGIS 10.3 for Server的新特性给大家进行简单 ...

  9. Python开发【2.1 面向对象】

    1.面向对象概述 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类 ...

  10. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法

    一.匿名函数 匿名函数的结构:变量   =  lamda  参数: 返回值 a  =  lamda  x : x*x       # x为参数,   : 后边的为函数体 print(a(x)) def ...