意甲冠军:有一2*2云,而一个4*4范围。在当天密布区必须有雨。有云4招式种类 。期间希望不要下雨,并且一个地方不能有连续7天没下雨。

思路:首先解决一个地方不能有连续7天没下雨的情况,要让地图上的全部地方都覆盖到的话,仅仅要4个角都覆盖到的话,即可了,由于要到那里就要经过全部的了,然后就是状态的记录了,vis[k][sign][a][b][c][d],表示第k天点是sign的四个格子的下雨情况

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; struct node {
int a,b,c,d;
node():a(0), b(0), c(0), d(0) {}
};
struct point {
int x,y;
point(int _x, int _y):x(_x), y(_y) {}
};
const int dir[9][2] = {{0, 0}, {-1, 0}, {-2, 0}, {0, -1},
{0, -2}, {1, 0}, {2, 0}, {0, 1}, {0, 2}};
int vis[370][9][7][7][7][7];
int day[370], n; int getFlag(int i) {
return 1<<i;
} int check(int k, const point &u, const node &s) {
if (s.a == 7 || s.b == 7 || s.c == 7 || s.d == 7)
return 0;
int flag = 0;
int x = u.x, y = u.y;
flag |= getFlag(4*x+y) | getFlag(4*x+y+1);
flag |= getFlag(4*(x+1)+y) | getFlag(4*(x+1)+y+1);
if (flag & day[k])
return 0;
if (vis[k][4*x+y][s.a][s.b][s.c][s.d])
return 0;
vis[k][4*x+y][s.a][s.b][s.c][s.d] = 1;
return 1;
} int dfs(int k, const point &u, const node &state) {
if (k == n)
return 1;
node s = state;
s.a += 1, s.b += 1;
s.c += 1, s.d += 1;
if (u.x == 0 && u.y == 0)
s.a = 0;
else if (u.x == 0 && u.y == 2)
s.b = 0;
else if (u.x == 2 && u.y == 0)
s.c = 0;
else if (u.x == 2 && u.y == 2)
s.d = 0;
if (!check(k, u, s))
return 0;
for (int i = 0; i < 9; i++) {
int nx = u.x + dir[i][0];
int ny = u.y + dir[i][1];
if (nx >= 0 && nx < 3 && ny >= 0 && ny < 3)
if (dfs(k+1, point(nx, ny), s))
return 1;
}
return 0;
} int main() {
while (scanf("%d", &n) != EOF && n) {
for (int i = 0; i < n; i++) {
day[i] = 0;
for (int j = 0; j < 16; j++) {
int x;
scanf("%d", &x);
day[i] <<= 1;
day[i] |= x;
}
memset(vis[i], 0, sizeof(vis[i]));
}
node s;
if (dfs(0, point(1, 1), s))
printf("1\n");
else printf("0\n");
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

POJ 2044 Weather Forecast的更多相关文章

  1. 【POJ 2044】 Weather Forecast

    [题目链接] http://poj.org/problem?id=2044 [算法] 广度优先搜索 [代码] #include <algorithm> #include <bitse ...

  2. POJ2044 Weather Forecast 题解

    写了一个小时--不会--无耻地看题解去了-- 关键在于存储状态的方式,真没想到-- 每个状态要存当前坐标.天数和这个状态下四个角的情况,vis数组存整张图的访问情况,有天数.坐标.四个角的情况,只有这 ...

  3. BFS广搜题目(转载)

    BFS广搜题目有时间一个个做下来 2009-12-29 15:09 1574人阅读 评论(1) 收藏 举报 图形graphc优化存储游戏 有时间要去做做这些题目,所以从他人空间copy过来了,谢谢那位 ...

  4. weather API 天气api接口 收集整理

    腾讯 http://sou.qq.com/online/get_weather.php?callback=Weather&city=南京 中国天气-weather.com.cn http:// ...

  5. English trip V1 - B 5.Is It Cold Outside? 外面很冷? Teacher:Corrine Key: weather

    In this lesson you will learn to talk about the weather. 本节课将学习到关于天气 课上内容(Lesson) 词汇(Key Word ) # 关于 ...

  6. C# XML转JSON,不引用第三方JSON.NET类库

    应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...

  7. JVM类加载过程

    先不说JVM类加载的原理,先看实例: NormalTest类,包含了一个静态代码块,执行的任务就是打印一句话. /** * 在正常类加载条件下,看静态代码块是否会执行 * @author jianyi ...

  8. 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)

    第一部分 1 初级句型-简单句(Simple Sentences):(1.1)基本句型&补语.(1.2)名词短语&冠词.(1.3)动词时态.(1.4)不定式短语.(1.5)动名词.(1 ...

  9. 天气预报API(三):免费接口测试(“旧编码”)

    说明 我以参考文章为引子,自己测试并扩展,努力寻找更多的气象API... 本文所有测试均以青岛为例. 本文所列接口城市代码(cityid)参数都使用的 "旧编码": 全国城市代码列 ...

随机推荐

  1. Effective Java 学习笔记之第七条——避免使用终结(finalizer)方法

    避免使用终结方法(finalizer) 终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的. 不要把finalizer当成C++中析构函数的对应物.java中,当对象不 ...

  2. jsp中文乱码终极解决方法(转)

    一, 找出问题的根源乱码可能出现的地方: jsp页面中 jsp页面之间相互传参的参数 与数据库中数据的存取 基本归纳为以上几种. 二, 寻找解决方案 出现在jsp页面中,是由于没有设置jsp页面的中文 ...

  3. dom4j 笔记【转】

    SAXReader reader = new SAXReader(); Document doc = reader.read(...); List childNodes = doc.selectNod ...

  4. iOS使用阿里云OSS对象存储 (SDK 2.1.1)

    最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...

  5. 17个提升iOS开发效率的必用工具

    时间就是金钱.编码效率的提升意味着更多的收入.可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我们提升编码速度和工作效率的工 ...

  6. 移动端web开发调试

    手机上安装chrome, 连接上usb允许调试,打开电脑的chrome,输入chrome://inspect 点击电脑页面的inspect即可,这时操作手机和电脑能达到同步显示. android4.4 ...

  7. ReetrantLock Synchronized Atomic的性能对比

    之前看到了一篇帖子关于Lock和Synchronized的性能,写的是Lock比Synchronized的性能要好,可是,我试了下,结果却不是这样的,我所使用的JDK的版本是1.7,可能跟原帖作者用的 ...

  8. cursor变换

    cursor:hand 与 cursor:pointer 的效果是一样,都像手形光标.但用FireFox浏览时才注意到使用cursor:hand在FireFox.chorme里并被支持. cursor ...

  9. Gson解析json繁杂数据

    碰到json数据.里面格式众多.list+string[]+等等.具体json参数如下: eg:以下为接口参数: "responseData":{ "brandCode& ...

  10. html5--canvas学习笔记

    1. 添加<canvas>元素 right: <canvas id="myCanvas" width="300" height="3 ...