CF750D New Year and Fireworks
题意:
放烟花。
一个烟花从某一起点开始,沿着当前方向移动指定数量的格子之后爆炸分成两部分,分别沿着当前方向的左上和右上方向移动。而每一部分再沿着当前方向移动指定数量的格子之后爆炸分成两部分。如此递归下去直到指定的深度。问最终被至少被烟花的任一部分覆盖一次的格子数量有多少。
输入:深度及每一层的爆炸前的移动距离。
输出:至少被烟花的任一部分覆盖一次的格子数量。
示例:
4
4 2 2 3
39
6
1 1 1 1 1 3
85
1
3
3
input1图示:

input2图示:

思路:
深搜。
实现:
#include <iostream>
#include <cstdio>
using namespace std; int n, a[], m[][], vis[][][][]; int dx[] = {, , , -, -, -, , };
int dy[] = {, -, -, -, , , , }; void dfs(int cur, int x, int y, int dir)
{
if (cur == n || vis[cur][x][y][dir])
return;
vis[cur][x][y][dir] = m[x][y] = ;
for (int i = ; i < a[cur]; i++)
{
x += dx[dir];
y += dy[dir];
m[x][y] = ;
}
int nd = (dir + ) & ;
dfs(cur + , x + dx[nd], y + dy[nd], nd);
nd = (dir + ) & ;
dfs(cur + , x + dx[nd], y + dy[nd], nd);
} int main()
{
cin >> n;
for (int i = ; i < n; i++)
{
cin >> a[i];
}
dfs(, , , );
int cnt = ;
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
if (m[i][j])
cnt++;
}
}
cout << cnt << endl;
return ;
}
总结:
当m = 2 ^ k时, n % m = n & (m - 1)。
CF750D New Year and Fireworks的更多相关文章
- 关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法
关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法 最近换了新版的Adobe Fireworks CS5,发现打开图片文件时在右键“打开方式”里仍然是以前的Firewor ...
- fireworks将图片变为透明色
如果是新建的图片,只要把画布背景设置成透明,图片完成后保存为GIF格式即可: 如果是已经存在的图片,用Fireworks将图片打开,然后按Ctrl+Shift+X,在弹出界面中格式选择为GIF.在右边 ...
- Codeforces Round #219 (Div. 1) C. Watching Fireworks is Fun
C. Watching Fireworks is Fun time limit per test 4 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #219 (Div. 2) E. Watching Fireworks is Fun
http://codeforces.com/contest/373/problem/E E. Watching Fireworks is Fun time limit per test 4 secon ...
- Fireworks Extension —— AutoSlice 介绍
前不久在网上到处瞎晃的时候,发现Adobe的软件几乎都可以写插件.Fireworks更是很早的版本就支持使用javascript编写插件,于是乎如入桃园,奋斗几日为VD小伙伴们写了一个插件,命名Aut ...
- Fireworks Extension —— 开发篇(Dom模型)
如上一篇博文所叙述的,一个很偶然的机会,我得知可以使用Javascript开发Fireworks插件,又注意到了视觉小伙伴的需求,于是便上手开发Fireworks Extension了. 很幸运的,在 ...
- Adobe Fireworks CS6 Mac破解版
Mac下一款快速建站的软件--Adobe Fireworks CS6,小子这里有时间就分享出来给更多需要的朋友. Adobe Fireworks CS6能让您在弹指间创作精美的网站和移动应用程序设计, ...
- [label][Fireworks][转载] Web Slices - Fireworks CS5
Web Slices – Fireworks CS5 http://bestwebdesignz.com/tips/fireworks/web-slices-fireworks-cs5/ Need a ...
- 关于京东首页的制作以及切图软件fireworks推荐
这几天跟随老师给的视频学习制作京东首页 学到了很多 以下是相关代码和截图 html部分 <!DOCTYPE html><html lang="en">< ...
随机推荐
- CentOS 7.2安装Jenkins自动构建Git项目
1.环境 本文使用VMWare虚拟机进行实验. 最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器" ...
- JS判断按时间跳转到相应的页面
<!--时间段跳转js--><script language="javaScript" type="text/javascript"> ...
- linux初级学习笔记一:linux操作系统及常用命令,及如何获取命令的使用帮助!(视频序号:02_1,2)
本节学习的命令:ls,cd,type,pwd, printenv, hash, date, clock, man, hwclock, info, cal, echo, printf, file! 本节 ...
- parquet文件格式——本质上是将多个rows作为一个chunk,同一个chunk里每一个单独的column使用列存储格式,这样获取某一row数据时候不需要跨机器获取
Parquet是Twitter贡献给开源社区的一个列数据存储格式,采用和Dremel相同的文件存储算法,支持树形结构存储和基于列的访问.Cloudera Impala也将使用Parquet作为底层的存 ...
- lock的两种方式
假设现在我们有100个数据项可以读写.有若干个线程,任何一个线程可能对任何一个数据项尽心读写. 但是,如果不同的线程在对同一个数据项进行读写,就可能发生错误.需要使用lock进行控制. 比如线程x要对 ...
- Windows Mysql启动出现1069错误 “由于登录失败而无法启动服务” 的处理方法
问题现象 windows下mysql服务无法启动,报1069错误. 问题原因 如果Mysql启动用户的密码或者权限错误,会导致Windows服务器Mysql启动时出现"由于登录失败而无法启动 ...
- MyBatis学习 之 七、mybatis各种数据库的批量修改
MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. 注意:下 ...
- window.scrollTo和window.scrollBy
scrollTo-- 在窗体中如果有滚动条,将横向滚动条移动到相对于窗体宽度为x个像素的位置,将纵向滚动条移动到相对于窗体高度为y个像素的位置(如果没有滚动条,页面不会发生任何变化) scrollTo ...
- 【208】CentOS 下安装 Wine
参考:centos6.5安装wine 参考:用FreeGate自-由-门软件在Linux上更新Android SDK 参考:CentOS 5.3 使用wine装QQ
- CodeForces 712B Memory and Trident (水题,暴力)
题意:给定一个序列表示飞机要向哪个方向飞一个单位,让你改最少的方向,使得回到原点. 析:一个很简单的题,把最后的位置记录一下,然后要改的就是横坐标和纵坐标绝对值之和的一半. 代码如下: #pragma ...