题意:就是平时玩的十滴水游戏,游戏者拥有一定的水滴,能够滴在某些位置,如果一个点上的体积超过了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 小明系列故事——玩转十滴水 模拟的更多相关文章

  1. hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  2. hdu 4542 小明系列故事——未知剩余系

    小明系列故事——未知剩余系 题意:操作0表示某数有n个约数,操作1为某数有n个非约数:n <= 47777,若是存在小于2^62的数符合,则输出该数,否则若是不存在输出Illegal,若是大于2 ...

  3. HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  4. HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  5. hdu 4542 小明系列故事——未知剩余系 反素数 + 打表

    小明系列故事——未知剩余系 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Prob ...

  6. HDU 4828 小明系列故事——捉迷藏

    漂亮妹子点击就送:http://acm.hdu.edu.cn/showproblem.php?pid=4528 Time Limit: 500/200 MS (Java/Others)    Memo ...

  7. HDU - 4511 小明系列故事――女友的考验(AC自己主动机+DP)

    Description 最终放寒假了,小明要和女朋友一起去看电影.这天,女朋友想给小明一个考验,在小明正准备出发的时候.女朋友告诉他.她在电影院等他,小明过来的路线必须满足给定的规则:  1.如果小明 ...

  8. hdu 4542 "小明系列故事——未知剩余系" (反素数+DFS剪枝)

    传送门 参考资料: [1]:https://blog.csdn.net/acdreamers/article/details/25049767 题意: 输入两个数 type , k: ①type = ...

  9. hdu 4506 小明系列故事——师兄帮帮忙

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4506 题目大意:找规律,判断k的t次幂前面的系数. #include <iostream> ...

随机推荐

  1. PHP中空字符串介绍0、null、empty和false之间的关系

    PHP中空字符串介绍0.null.empty和false之间的关系 作者: 字体:[增加 减小] 类型:转载 时间:2012-09-25   用PHP开发那么久,PHP中空字符串.0.null.emp ...

  2. 基于swoole的网页一对一实时聊天

    需求分析 网站上实现一对一即时沟通,能查看聊天记录以及离线留言,新消息提醒. 核心技术 html5的websocket,php的swoole扩展http://wiki.swoole.com/ 数据表 ...

  3. win7下用mklink命令解决delphiXE系列占用C盘空间的问题

    DelphiXE从2010以后, 安装程序安装完成后都会在ProgramData目录里复制一份安装程序的备份, 随着版本升级安装包越来越大, 占用C盘的空间也就越来越大 虽然可以通过删除的方式删掉, ...

  4. Summary of Mac Versions

    1.在 submit 的过程被 cancel 掉,可能会出现某些文件被 lock 住导致没办法再重新 update and commit. 解决方法: a) Memu."Action&quo ...

  5. meanshift

    http://blog.jasonding.top/2014/10/14/Machine%20Learning/%E3%80%90%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%8 ...

  6. 【转】Linux下怎样检查、如何查看某软件包是否已经安装?

    因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa ...

  7. Web3D编程总结——3D碰撞检测初探

    自己动手写一个方法比分析他人的写的方法困难很多,由此而来的对程序的进一步理解也是分析别人的代码很难得到的. 一.先来几张效果图: 1.场景中有两个半径为1的球体,蓝色线段从球心出发指向球体的“正向” ...

  8. leetcode_199 Binary Tree Right Side View

    题目: Given a binary tree, imagine yourself standing on the right side of it, return the values of the ...

  9. 怎么理解Android版本兼容???

    程序中设置了minSdkVersion和targetSdkVersion如下: <uses-sdk android:minSdkVersion="8" android:tar ...

  10. ThinkPHP讲解(十二)——文本编辑器和ajax传址

    一.文本编辑器 1.首先,在网上下载ueditor文件 2.在要添加文本编辑器的页面中引用ueditor文件中的js文件 <script type="text/javascript&q ...