hdu 4527 小明系列故事之玩转十滴水

小明最近喜欢上了一个名为十滴水的游戏。

开发">

游戏是在一个6*6的方格 内进行的,每个格子上有一滴水或者没有水滴。水滴分为四个等级1~4。初始时你有十滴水,通过把水加 入格子内的水滴,会让水滴升1级。你也可以把水放到空格子内,这样会在这个格子里面产生一个1级的 水滴。当水滴等级大于4时则会爆裂为四个小水滴,并向四个方向飞溅。每个飞溅的小水滴碰到其他水滴 后会融入其中,使其升一级或者爆裂,以此类推。飞溅的小水滴互不干扰,运动速度相等(1秒可以移动 一个格子的距离)。水滴爆裂后就消失掉了。

思路:

直接用bfs来模拟, 注意模 拟时要一个单位时间一个单位时间的走,如果两个水滴同时到达另一个水滴,那么那个水滴+2。

这秒走完以后,再看把所有点中大于4的要爆炸的水滴处理成四个方向上的水滴并入队列,然后继续走下 一秒。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;  

typedef long long int64;
const int INF = 0x3f3f3f3f;
const int MAXN = 10010;  

int m;
int mat[8][8];
int blast[8][8];
// 上,下,左,右
const int dir[][2] = {{-1,0},{1,0},{0,-1},{0,1}};  

struct Node{
    int x, y;
    int cnt;
    int dir;
}Q[500000];  

void addQue(int x, int y, int cnt, int& rear){
    mat[x][y] = 0;
    for(int i=0; i<4; ++i){
        int dx = x + dir[i][0];
        int dy = y + dir[i][1];
        if(dx>=1&&dx<=6&&dy>=1&&dy<=6){
            Q[rear].x = dx;
            Q[rear].y = dy;
            Q[rear].cnt = cnt;
            Q[rear++].dir = i;
        }
    }
}  

void bfs(int x, int y){
    int front=0, rear=0;  

    addQue(x, y, 0, rear);  

    int cur = 0; //当前第几秒  

    while(front < rear){  

        while(front < rear && Q[front].cnt==cur){ //  把这一秒的全走完
            Node &t = Q[front++];
            if(mat[t.x][t.y]){
                ++mat[t.x][t.y];
            } else{
                Node& now = Q[rear];
                now.x = t.x + dir[t.dir][0];
                now.y = t.y + dir[t.dir][1];
                now.cnt = t.cnt + 1;
                now.dir = t.dir;
                if

(now.x>=1&&now.x<=6&&now.y>=1&&now.y<=6)
                    ++rear;
            }
        }
        for(int i=1; i<=6; ++i){
            for(int j=1; j<=6; ++j)if(mat[i][j]>4){
                addQue(i,j,cur+1,rear);
            }
        }
        ++cur;
    }
}  

int main(){  

    int x, y;
    while(~scanf("%d", &mat[1][1])){  

        for(int i=1; i<=6; ++i){
            for(int j=(i==1?2:1); j<=6; ++j){
                scanf("%d", &mat[i][j]);
            }
        }
        scanf("%d", &m);
        for(int i=0; i<m; ++i){
            scanf("%d%d", &x, &y);
            if(++mat[x][y]>4){
                bfs(x, y);
            }
        }  

        for(int i=1; i<=6; ++i){
            for(int j=1; j<=6; ++j)
                if(j!=1) printf(" %d", mat[i][j]);
                else printf("%d", mat[i][j]);
            putchar('\n');
        }
        putchar('\n');
    }
    return 0;
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, include
, const
, mat
, int转时间
, 一个
, 或者
格子
小明带你玩转叉叉开发、yy4527、iso 4527中文版、ca4527、iso 4527,以便于您获取更多的相关知识。

时间: 2024-10-04 18:57:48

hdu 4527 小明系列故事之玩转十滴水的相关文章

hdu 4530 小Q系列故事——大笨钟

点击打开链接hdu 4530 思路: 1 当p = 1 ,正常的走了k*60秒那么大笨钟走了k*(60-x) 2 当p = 2 ,大笨钟走了k*60秒那么正常走了60*k*(60/(60-x)) 3 当p = 3 ,那么我们可以先算出第一次相遇用了多少时间,然后乘上k次即可.根据大笨钟1分钟少走x秒,那么一圈少走了12*60*x秒,那么第一次相遇的时候正常走了(12*3600)/(12*60*x)圈即60/x,那么k次就是k*60/x也就是12*3600*k*60/x秒 代码: #include

HDU4501-小明系列故事——买年货

小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2221    Accepted Submission(s): 995 Problem Description 春节将至,小明要去超市购置年货,于是小明去了自己经常去的都尚超市. 刚到超市,小明就发现超市门口聚集一堆人.用白云女士的话说就是:"那家伙,那场面,真是人

hdu 4531吉哥系列故事之乾坤大挪移

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4531 这道搜索题挺恶心的...比赛时没有写出来. 首先要解决的问题是怎样判断符合条件的状 态,即所有一样的颜色是连在一起的.我是采用最简单也最搓的方法,按上下左右顺序给每一个小三角 形标号1-36,然后建立一张邻接矩阵图,然后bfs判断. 然后就是主要的暴力枚举部分,每次有 12种状态转移的选择,开始时用dfs,但爆栈了.然后改成bfs,又各种TLE.然后就是不断地优化优化. 判重的状态可以用一个

腾讯马拉松 第三场 1003 小小明系列故事——游戏的烦恼 大水题

  比赛的时候看错题意了,其实是个大水题   只用把每个点和(0,0)之前的和算出来,然后枚举左上角即可 /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include &

HDU4520-小Q系列故事——最佳裁判

小Q系列故事--最佳裁判 Time Limit 500200 MS (JavaOthers)    Memory Limit 6553532768 K (JavaOthers) Total Submission(s) 1690    Accepted Submission(s) 819 Problem Description 过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月. 好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,

粤语MV《小明去东莞》网络热播

求扩散 香港儿科医生李家仁不知何时又来到东莞,同享有"香港儿歌之父"称号的音乐人韦然搭档,录制了一段MV<小明去东莞>.近日,东莞不少 网友正在疯传这段视频. 这段不到3分钟的MV上,收纳了虎门销烟.厚街烧鹅濑.松山湖.东莞方言等许多本地元素.演唱者李家仁医生用一段轻松诙谐的粤语RAP描述游玩东莞游记. 据悉,"小明系列"儿歌中的<小明上广州>.<小明去东莞>等是韦然和李家仁于去年底搭档制作,此系列歌曲被网友上传至某视频网站后,不

密歇根州立大学教授刘小明讲解:人脸识别的新技术 | 大牛讲堂

雷锋网按:本文作者刘小明,密歇根州立大学计算机科学与工程系助理教授,计算机视觉.模式识别.生物识别和机器学习领域专家.曾任ICPR,WACV和CVPR等多个计算机视觉及图像处理国际顶尖会议主席,获得多项国际学术大奖.共发表或出版100余本学术文章,持有22项美国专利. 在计算机视觉领域,人脸识别一直以来都是学术界和工业界的双重宠儿.学术上的热门和工业市场的迫切需求,使得围绕该方向的核心技术自深度学习爆发以来,得到了更为迅猛的发展. 得益于深度学习,当前计算机对人脸属性的分析判断在某些(姿态.光照

迪士尼发布小顽皮系列新作《米奇小顽皮?》

<米奇小顽皮?(Where'/s My Mickey?)>是来自迪士尼的小顽皮系列益智休闲游戏的最新作,继<鳄鱼小顽皮爱洗澡>和<鸭嘴兽泰瑞在哪里?>获得成功后,迪士尼移动将推出该系列作品的第三部.<米奇小顽皮?>引入了栩栩如生.基于物理的游戏界面,有着逼真的气象效果和幽默的动画.解决挑战谜题的同时可以观看到生动有趣的动画剧集,让自己沉浸在终极手机游戏体验当中吧!通过点击.滑动.挤压和旋转来帮助米奇收集水,完成每个故事.每一滴水都重要!游戏包含免费版和付费版

擅长排列的小明

擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长.现在需要你写一个程序来验证擅长排列的小明到底对不对. 输入 第一行输入整数N(1<N<10)表示多少组测试数据, 每组测试数据第一行两个整数 n m (1<n<9,0<m<=n) 输出 在1-n中选