Codefroces 750D:New Year and Fireworks(BFS)
http://codeforces.com/contest/750/problem/D
题意:烟花会绽放n次,每次会向前推进t[i]格,每次绽放会向左右45°绽放,问有烟花的格子数。
思路:n = 30, t = 5,所以最多推进150格。范围很小,开一个300*300的数组,初始位置在(150, 150),直接BFS。
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <vector>
#include <map>
#include <set>
using namespace std;
#define INF 0x3f3f3f3f
#define N 310
typedef long long LL;
struct P {
int x, y, step, dir;
P () {}
P (int x, int y, int step, int dir) : x(x), y(y), step(step), dir(dir) {}
};
int ans, t[N];
bool mp[N][N];
bool vis[N][N][][];
int d[][] = {{, }, {, }, {, }, {, -}, {, -}, {-, -}, {-, }, {-, }};
// 八个方向顺时针
void BFS(int n) {
queue<P> que;
while(!que.empty()) que.pop();
memset(vis, , sizeof(vis));
memset(mp, , sizeof(mp));
ans = ;
vis[][][][] = ; // 初始位置
que.push(P(, , , ));
while(!que.empty()) {
P f = que.front(); que.pop();
int nx = f.x, ny = f.y, step = f.step, dd = f.dir;
for(int i = ; i <= t[step]; i++) { // 处理这一层的绽放情况
nx += d[dd][];
ny += d[dd][];
mp[nx][ny] = ;
}
if(step < n) { // 向左右绽放
int dl = ((dd - ) + ) % , dr = (dd + ) % ;
if(!vis[nx][ny][step+][dl]) {
vis[nx][ny][step+][dl] = ;
que.push(P(nx, ny, step + , dl));
}
if(!vis[nx][ny][step+][dr]) {
vis[nx][ny][step+][dr] = ;
que.push(P(nx, ny, step + , dr));
}
}
}
for(int i = ; i <= ; i++)
for(int j = ; j <= ; j++)
if(mp[i][j]) ans++;
} int main() {
int n;
cin >> n;
for(int i = ; i <= n; i++) cin >> t[i];
BFS(n);
printf("%d\n", ans);
return ;
}
Codefroces 750D:New Year and Fireworks(BFS)的更多相关文章
- Codefroces 750C:New Year and Rating(思维)
http://codeforces.com/contest/750/problem/C 题意:有n场比赛,每场比赛有一个c,代表比赛结束后分数的增长情况,有一个d,代表这场比赛在div1或者div2打 ...
- AcWing:172. 立体推箱子(bfs)
立体推箱子是一个风靡世界的小游戏. 游戏地图是一个N行M列的矩阵,每个位置可能是硬地(用”.”表示).易碎地面(用”E”表示).禁地(用”#”表示).起点(用”X”表示)或终点(用”O”表示). 你的 ...
- 题解报告:poj 3669 Meteor Shower(bfs)
Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...
- Leetcode之广度优先搜索(BFS)专题-773. 滑动谜题(Sliding Puzzle)
Leetcode之广度优先搜索(BFS)专题-773. 滑动谜题(Sliding Puzzle) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary ...
- Leetcode之广度优先搜索(BFS)专题-127. 单词接龙(Word Ladder)
Leetcode之广度优先搜索(BFS)专题-127. 单词接龙(Word Ladder) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...
- Leetcode之广度优先搜索(BFS)专题-752. 打开转盘锁(Open the Lock)
Leetcode之广度优先搜索(BFS)专题-752. 打开转盘锁(Open the Lock) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary ...
- Leetcode之广度优先搜索(BFS)专题-1162. 地图分析(As Far from Land as Possible)
Leetcode之广度优先搜索(BFS)专题-1162. 地图分析(As Far from Land as Possible) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. ...
- Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges)
Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...
- Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares)
Leetcode之广度优先搜索(BFS)专题-279. 完全平方数(Perfect Squares) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...
随机推荐
- DS实验题 融合软泥怪-1
题目 思路 很容易想到第一种做法,用Huffman算法,从森林中找出两个值最小的节点,合并再加入森林,在这个过程中不断记录. 但是每一次需要sort一遍,将最小的两个值节点置于头两个节点,最坏情况下复 ...
- Public DNS (公共域名解析服务)
114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...
- 中科院开源协会镜像站 Android SDK镜像
中科院开源协会镜像站 Android SDK镜像测试发布 https://forum.opencas.org/t/184
- cocostudio做出来的界面如何进行分辨率适配,兼论cocos2dx3的多分辨率适配机制,以及retina适配机制
cocos有很多代码实际上都不再使用了,看代码时反而误导了程序员. 比如一个简单的分辨率适配,我查到了setContentSize,然后调用setContentSize,毫无用处啊!于是乎,我到处查资 ...
- python计算apache总内存
#!/usr/bin/env python import os from subprocess import Popen, PIPE def getPid(): p=Popen(['pidof','h ...
- linux实践之ELF文件分析
linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...
- 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。
分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...
- ECharts饼图试玩
处理类似提交问卷的数据,要生成图表,用了ECharts,好方便的. 简陋效果: 1.表单存储 有单选和多选题,单选直接存储各选项数字值,1,2,3,4...中一个:多选用|分隔存储选项值,如1|3,2 ...
- laravel5 使用model 表名总是多个s
正常,如果不要s,请在model 指定表名. class user extend Model{ public $table='user';//这样寻找的就是没s的表 }
- [SharePoint 2010] 自定义字段类型开发(二)
在SharePoint 2010中实现View Action Button效果. http://www.sharepointblogs.be/blogs/vandest/archive/2008/06 ...