HDU 4527 小明系列故事——玩转十滴水 2013腾讯编程马拉松初赛第五场第二题
2013-03-26 22:53
381 查看
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4527
这个和我们玩的3366游戏十滴水差不多,规则就是当水滴大于4的时候会爆裂像4个方向各传递一滴水。
有一点要注意的是,水滴的速度是相同的,所以可能有大于等于2滴水滴同时到达某一地方。
代码如下:
这个和我们玩的3366游戏十滴水差不多,规则就是当水滴大于4的时候会爆裂像4个方向各传递一滴水。
有一点要注意的是,水滴的速度是相同的,所以可能有大于等于2滴水滴同时到达某一地方。
代码如下:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <set> #include <map> #include <queue> using namespace std; /* freopen("input.txt", "r", stdin); //读数据 freopen("output.txt", "w", stdout); //注释掉此句则输出到控制台 */ int xh[7][7],t[4][2]={1,0,-1,0,0,1,0,-1};//方向 int visit[7][7];//记录时间 struct xiaohao { int x,y,t,d;//x,y坐标,t代表时间,d代表方向 }w,e; void dfs(int x,int y) { int i; queue<xiaohao> q; xh[x][y]++; if(xh[x][y]>4) { visit[x][y]=0; w.x=x;w.y=y;w.t=0;w.d=-1; q.push(w); } while(!q.empty()) { w=q.front(); q.pop(); if(w.d==-1)//w.d等与-1表示爆裂,其他表示分裂方向 xh[w.x][w.y]=0; for(i=0;i<4;i++) { if(w.d!=-1&&w.d!=i)//如果不是爆裂也不是沿着原方向,则continue continue; int xx=w.x+t[i][0],yy=w.y+t[i][1]; if(xx>0&&xx<=6&&yy>0&&yy<=6) { if(xh[xx][yy]==0) { e.x=xx;e.y=yy;e.t=w.t+1;e.d=i; q.push(e); } else if(xh[xx][yy]<4)//小于4,直接++ { xh[xx][yy]++; } else if(xh[xx][yy]==4)//这个地方只能写等于4,因为有同时到达可能大于四 { xh[xx][yy]++; visit[xx][yy]=w.t+1; e.x=xx;e.y=yy;e.t=w.t+1;e.d=-1; q.push(e); } else { //如果快于或等于上一次到达,则++ if(w.t+1<=visit[xx][yy]) xh[xx][yy]++; //比上一次慢那么继续前进 else { e.x=xx;e.y=yy;e.t=w.t+1;e.d=i; q.push(e); } } } } } } int main() { int i,j,x,y,m; while(cin>>xh[1][1]) { for(i=1;i<=6;i++) for(j=1;j<=6;j++) if(i!=1||j!=1) scanf("%d",&xh[i][j]); cin>>m; while(m--) { memset(visit,-1,sizeof(visit)); scanf("%d%d",&x,&y); dfs(x,y); } for(i=1;i<=6;i++) printf("%d %d %d %d %d %d\n",xh[i][1],xh[i][2],xh[i][3],xh[i][4],xh[i][5],xh[i][6]); printf("\n"); } return 520; }
相关文章推荐
- HDU 4525 威威猫系列故事——吃鸡腿 2013腾讯编程马拉松初赛第五场第一题
- 腾讯第二届编程马拉松初赛3月21日晚第二题之小明系列故事——师兄帮帮忙
- HDOJ4501 小明系列故事——买年货(三维多重背包变形)&& 腾讯2013编程马拉松第0场第二题
- 2013腾讯编程马拉松初赛第〇场(3月20日)小明系列故事——买年货
- 2013腾讯编程马拉松初赛第一场(3月21日) 小明系列故事——师兄帮帮忙 !!快速幂取摸
- 2013腾讯编程马拉松初赛第一场(3月21日)小明系列故事——师兄帮帮忙
- 2013腾讯编程马拉松初赛:郑厂长系列故事——体检
- 2013腾讯编程马拉松初赛第一场(3月21日) 湫湫系列故事——减肥记II ----线段树
- 湫湫系列故事——植树节(2013腾讯编程马拉松初赛)
- 小明系列故事——玩转十滴水 腾讯马拉松时间模拟 HDOJ 4527
- HDU 4521 2013腾讯编程马拉松初赛第四场 小明系列问题——小明序列(dp思想+线段树优化)
- 2013腾讯编程马拉松初赛第〇场(3月20日)湫湫系列故事——植树节 HDOJ 4503
- HDU 4500 小Q系列故事——屌丝的逆袭 2013腾讯编程马拉松初赛第〇场第一题
- 2013腾讯编程马拉松初赛第一场(3月21日) 小Q系列故事——电梯里的爱情
- 2013腾讯编程马拉松初赛:小Q系列故事——屌丝的逆袭
- 2013腾讯编程马拉松初赛(3月23)1001小Q系列故事——世界上最遥远的距离
- 2013腾讯编程马拉松初赛第一场(3月21日) 湫湫系列故事——减肥记II ----线段树
- 2013腾讯编程马拉松初赛第〇场(HDU 4504)威威猫系列故事——篮球梦
- 2013腾讯编程马拉松初赛第〇场(3月20日)湫湫系列故事——植树节 HDOJ 4503
- 2013腾讯编程马拉松初赛第一场(3月21日)湫湫系列故事——减肥记II