ACM-ICPC North America Qualifier 2014 Eight Queens

题意:问图是否满足八皇后。

解题思路:hash,dp,位运算

解题代码:

我的搓代码。

 1 // File Name: a.cpp
 2 // Author: darkdream
 3 // Created Time: 2015年03月14日 星期六 12时00分44秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25
26 using namespace std;
27 char  str[10][10];
28 int hsh[10];
29 int hsl[10];
30 int hshl[50];
31 int hslh[50];
32 int main(){
33     while(scanf("%s",&str[1][1]) != EOF)
34     {
35        for(int i = 2;i <= 8 ;i ++)
36        {
37          scanf("%s",&str[i][1]);
38        }
39        memset(hsh,0,sizeof(hsh));
40        memset(hsl,0,sizeof(hsh));
41        memset(hshl,0,sizeof(hshl));
42        memset(hslh,0,sizeof(hslh));
43        int ok = 0 ;
44        for(int i= 1;i <= 8;i ++)
45        {
46           for(int j = 1;j <= 8 ;j ++)
47           {
48               if(str[i][j] == ‘.‘)
49                   continue;
50               if(hsh[i] == 1)
51               {
52                  ok = 1;
53               }else{
54                  hsh[i] = 1 ;
55               }
56
57               if(hsl[j] == 1)
58               {
59                  ok = 1;
60               }else{
61                  hsl[j] = 1 ;
62               }
63
64               if(hshl[j-i+25] == 1)
65               {
66                  ok = 1;
67               }else{
68                  hshl[j-i +25] = 1 ;
69               }
70
71               if(hslh[j+i] == 1)
72               {
73                  ok = 1;
74               }else{
75                  hslh[j+i] = 1 ;
76               }
77           }
78
79        }
80        if(ok == 1 )
81            printf("invalid\n");
82        else printf("valid\n");
83     }
84
85
86     return 0;
87 }

然后看到了学弟的位运算代码:

 1 #include <iostream>
 2 #include <vector>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6 char chess[10][10];
 7 int stu1 = 0, stu2 = 0, flag = 0;
 8 int main() {
 9     for (int i = 0; i < 8; i++)     gets (chess[i]);
10     for (int i = 0; i < 8; i++) {
11         for (int j = 0; j < 8; j++)
12             if (chess[i][j] == ‘*‘)
13                 if (! (stu1 & 1 << j) && ! (stu2 & 1 << j))
14                         stu1 |= 1 << j, stu2 |= 1 << j;
15                 else {
16                     flag = 1;break;
17                 }
18         if (flag) break;
19         stu1 <<= 1, stu2 >>= 1;
20     }
21     if(flag) puts("invalid");
22     else puts("valid");
23 }

时间: 2024-12-18 21:22:50

ACM-ICPC North America Qualifier 2014 Eight Queens的相关文章

ACM-ICPC North America Qualifier 2014 Units

题意:题如其名,给你n个单位 ,以及n-1个单位换算信息,让你把完整的单位换算链写出来. 解题思路:搜索 或者 floyd 解题代码: 1 // File Name: j.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月14日 星期六 15时56分31秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #

ACM-ICPC North America Qualifier 2014 Narrow Art Gallery

题意:一个宽为2长为n的画廊,每个格子有一个值,问你关闭k个格子,使得画廊不堵塞且剩余值最大. 解题思路:dp[i][j][0/1]  表示 第 i个位置 ,选取第 j个格子关闭 ,关闭i位置的k格子的最小值. 解题代码: 1 // File Name: h.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月14日 星期六 12时28分16秒 4 5 #include<vector> 6 #include<list> 7 #

ACM-ICPC North America Qualifier 2014 Human Cannonball Run

题意:在一个二维平面中 一个人走路的速度是 5m/s , 平面中有n个大炮,射程固定为50m且时间为2秒  ,问你最短时间. 解题思路:最短路 解题代码: 1 // File Name: e.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月14日 星期六 16时47分54秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<s

ACM-ICPC North America Qualifier 2014 Tractor

题意:一个奶牛从(0,0)点开始跳,它只能朝着x轴正向和y轴正向跳,且第i次跳只能跳 2^(i-1)个距离,问你  矩阵((0,0),(A,B))中奶牛能跳到多少个点. 解题思路:你最后发现 每次跳一步的点都在一条斜线上. 解题代码: 1 // File Name: t.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月14日 星期六 13时37分30秒 4 5 #include<vector> 6 #include<list&g

Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)

题目描述 Peter returned from the recently held ACM ICPC World finals only to find that his return flight was overbooked and he was bumped from the flight! Well, at least he wasn’t beat up by the airline and he’s received a voucher for one free flight bet

North America Qualifier (2015)

https://icpc.baylor.edu/regionals/finder/north-america-qualifier-2015 一个人打.... B 概率问题公式见代码 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <queue> 5 #include <stack> 6 #include <vector> 7 #incl

poj 5024&amp;&amp;&amp;2014 ACM/ICPC Asia Regional Guangzhou Online 1003(预处理)

http://acm.hdu.edu.cn/showproblem.php?pid=5024 分析:预处理每个点在八个方向的射线长度,再枚举八种L形状的路,取最大值. 注意题意是求一条最长路,要么一条直线,要么只有一个90角,即L型.其实直线就是L形的一个方向长度为0. 代码: #include<iostream> #include<map> #include<cstdio> #include<string> #include<cstring>

2014 ACM/ICPC Asia Regional Guangzhou Online Wang Xifeng&#39;s Little Plot HDU5024

一道好枚举+模拟题目.转换思维视角 这道题是我做的,规模不大N<=100,以为正常DFS搜索,于是傻乎乎的写了起来.各种条件限制模拟过程 但仔细一分析发现对每个点进行全部八个方向的遍历100X100X100^8 .100X100个点,每个点在走的时候8中选择,TLE 于是改为另一个角度: 以符合要求的点为拐弯点,朝两个垂直的方向走,求出最远的距离.这样只要对每个点各个方向的长度知道,组合一下对应的就OK. 避免了每个点深搜. PS:搜索的时候x,y写反了,导致构图出现问题,以后用[dy][dx]

HDU 5014 Number Sequence(2014 ACM/ICPC Asia Regional Xi&#39;an Online) 题解

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5014 Number Sequence Problem Description There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules: ● ai ∈ [0,n] ● ai ≠ aj( i ≠ j ) For sequence a and sequ