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> ... 
随机推荐
- window.self ->window.top->window.parent
			在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ... 
- ModSecurity 白名单设置
			方法一.SecRuleRemoveById 指令:通过Rule ID禁用指定规则 #waf whitelist <LocationMatch .*> SecRuleRemoveById 9 ... 
- 虚拟机设置静态ip
			最近学习hadoop,用到虚拟机来做分布式,由于hadoop要配置slave节点的主机名,所以需要修改hosts文件的ip地址和主机名的映射关系. 但是虚拟机每次重启后,ip地址都会变 ,这样每次都得 ... 
- iOS后台定位,实时向服务器发送最新位置
			第一步,开启后台模式,选中定位,选择project --> capabilities-->Backgorund Modes --> Location updates 如图: Past ... 
- 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
			出现这种原因主要是8080端口被占用了. 解决1: 打开任务管理器看看里面有没有javaw的线程,把它关了再重新启动tomcat看看. 解决2: 修改tomcat /conf /server.xml ... 
- RML-怎样的语句会被归纳为同一类型(Unique Batches)
			我们知道使用RML工具分析跟踪数据(.TRC),其中的"Unique Batches",就是一个关于Batch级别的报表,Batch级别的报表针对的是存储过程或是一个TSQL Ba ... 
- LUA OOP 单例模式实现的 一个 方案
			单例 存在这么一类class, 无论class怎么初始化, 产生的instance都是同一个对象. Code string.toHTMLCode = function(self) return enc ... 
- 手动启动mongodb和nodejs程序
			最近做单片机去了,以前用的mongodb和nodejs没有配置成服务,居然忘了如何手动启动.在此记录下 一.手动启动mongodb 1.进入cmd 2.在dos下打开mongodb路径E:\mongo ... 
- jquery入门学习笔记
			还是先来个例子: <div id="div1" class="box">div</div> <ul> <li>& ... 
- node与Elment以及子节点childrenNode与children的区别(2)
			测试代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ... 
