HDU-4527 小明系列故事——玩转十滴水 模拟
题意:就是平时玩的十滴水游戏,游戏者拥有一定的水滴,能够滴在某些位置,如果一个点上的体积超过了4就会爆炸,向四周传递一个小水滴。该题就是要求模拟这个过程。
分析:这里有一个问题就是不能够使用递归来处理这个过程,因为水滴拥有速度,如果是递归调用的话,那么可能本来应该同时到达某点的水滴变成不同时间到达了。处理该题使用了两个队列,分别模拟当前时刻,和下一时刻,每次从当前时刻取出所有的水滴,再视情况处理加入到下一时刻的队列中。有个地方要注意就是同时到达某一点的水滴加上原来的水滴超过了5那么视作和5等效。
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std; int mp[][];
int m;
struct Node {
int x, y, d;
Node() {}
Node(int _x, int _y, int _d) : x(_x), y(_y), d(_d) {}
};
queue<Node>q[]; int dir[][] = {, , , -, , , -, }; bool judge(int x, int y) {
if (x < || x > || y < || y > ) return false;
else return true;
} void go(int x, int y) {
if (mp[x][y] < ) {
mp[x][y]++;
return;
}
int cur = , nxt = , xx, yy;
mp[x][y] = ;
for (int i = ; i < ; ++i) {
xx = x+dir[i][], yy = y+dir[i][];
if (judge(xx, yy)) {
q[cur].push(Node(xx, yy, i));
}
}
Node tmp;
while (!q[cur].empty()) {
while (!q[cur].empty()) {
tmp = q[cur].front();
q[cur].pop();
if (mp[tmp.x][tmp.y] == ) {
if (judge(xx=tmp.x+dir[tmp.d][], yy=tmp.y+dir[tmp.d][])) {
q[nxt].push(Node(xx, yy, tmp.d));
}
} else {
mp[tmp.x][tmp.y]++;
}
}
for (int i = ; i <= ; ++i) {
for (int j = ; j <= ; ++j) {
if (mp[i][j] >= ) {
mp[i][j] = ;
for (int k = ; k < ; ++k) {
xx = i + dir[k][], yy = j + dir[k][];
if (judge(xx, yy)) {
q[nxt].push(Node(xx, yy, k));
}
}
}
}
}
swap(cur, nxt);
}
} void print() {
for (int i = ; i <= ; ++i) {
for (int j = ; j <= ; ++j) {
printf(j == ? "%d\n" : "%d ", mp[i][j]);
}
}
} int main() {
while (scanf("%d", &mp[][]) != EOF) {
for (int i = ; i <= ; ++i) {
scanf("%d", &mp[][i]);
}
for (int i = ; i <= ; ++i) {
for (int j = ; j <= ; ++j) {
scanf("%d", &mp[i][j]);
}
}
scanf("%d", &m);
int x, y;
while (m--) {
scanf("%d %d", &x, &y);
go(x, y);
}
print();
puts("");
}
return ;
}
HDU-4527 小明系列故事——玩转十滴水 模拟的更多相关文章
- hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- hdu 4542 小明系列故事——未知剩余系
小明系列故事——未知剩余系 题意:操作0表示某数有n个约数,操作1为某数有n个非约数:n <= 47777,若是存在小于2^62的数符合,则输出该数,否则若是不存在输出Illegal,若是大于2 ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- hdu 4542 小明系列故事——未知剩余系 反素数 + 打表
小明系列故事——未知剩余系 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Prob ...
- HDU 4828 小明系列故事——捉迷藏
漂亮妹子点击就送:http://acm.hdu.edu.cn/showproblem.php?pid=4528 Time Limit: 500/200 MS (Java/Others) Memo ...
- HDU - 4511 小明系列故事――女友的考验(AC自己主动机+DP)
Description 最终放寒假了,小明要和女朋友一起去看电影.这天,女朋友想给小明一个考验,在小明正准备出发的时候.女朋友告诉他.她在电影院等他,小明过来的路线必须满足给定的规则: 1.如果小明 ...
- hdu 4542 "小明系列故事——未知剩余系" (反素数+DFS剪枝)
传送门 参考资料: [1]:https://blog.csdn.net/acdreamers/article/details/25049767 题意: 输入两个数 type , k: ①type = ...
- hdu 4506 小明系列故事——师兄帮帮忙
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4506 题目大意:找规律,判断k的t次幂前面的系数. #include <iostream> ...
随机推荐
- Django model '__week_day'与python datetime的weekday()
上周出了个bug,按星期几查询数据的时候,发现查到的数据与显示的星期几并不相符,后来发现代码中按星期几查询,有的地方用的是Django QuerySet提供的'__week_day',有的地方用的是p ...
- 关于asp.net与jquery ajax 的一些补充
补充1:asp.net 与后台交互除了用之前写得$.ajsx()外 还可以直接使用$.get() , $.post()等. 补充2:jquery 跨域请求 例如: JSONP 跨域: $.ajax( ...
- Unit02-OOP-对象和类,数组(下)
Unit02-OOP-对象和类,数组(下) 1.方法的签名: 方法名+参数列表 2.方法的重载(Overload): 1)发生在一个类中,方法名称相同,参数列表不同 2)编译器在编译时自动根据签名 ...
- Python基础二. 数据结构、控制流、运算符、真值测试
一.概述 数据结构上广义上有两种,单一类型和集合类型 单一类型,表示一种对象 集合类型,表示包含多种对象 Python 中的内建的数据类型有str.list.tuple.dict.set.number ...
- MySQL导入.sql文件及常用命令
在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source d:/myprogram/d ...
- RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能
RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能 转眼间RDIFramework.NET框架走了快6个年头了,随着一个版本一个版本的升级改造,现在已经越来越完美了.使 ...
- (转载)移动WEB前端开发资源整合
收藏起来,感谢原文大大:Bon~~~ 原文链接:http://www.ccwebsite.com/development-of-resource-integration-in-mobile-termi ...
- 关于为busybox设置setuid
安卓root了,重启之后就没root权限了,于是想到了为 busybox 设置 setuid 来实现使用root的身份执行命令. 可是,不管用啊,还是提示没有权限.搜了一下 busybox setui ...
- IE8 下 select option 内容过长 , 展开时信息显示不全解决办法
IE8 下 select option 内容过长 , 展开时信息显示不全 , 简单折衷的方式就是给 option 加上 title 属性 , 但是又不想一个个的修改,怎么办呢,代码如下 : //sel ...
- C#知识点有必要知会
如果说你父类里面有一个成员比如int a;那么你子类里面也可以再定义一个int a,这个时候base.a和this.a表示的就不是一个变量了,如果说子类里面没有,那么base.a和this.a表示的都 ...