hdu5336 十滴水游戏的模拟
2015-07-30 19:17
274 查看
#include <iostream> #include<stdio.h> #include<string.h> #include<queue> using namespace std; const int N=105; int n,m,r,c; int T; int time; int tot[2]; int sx,sy; int dirx[]={0,0,1,-1}; int diry[]={1,-1,0,0}; int now; int a ; int xx[N*N],yy[N*N]; int res ; int ans[N*N]; struct drop{ int x,y; int dx,dy; }d[2][N*N]; void init(){ memset(a,0,sizeof a); memset(ans,0,sizeof ans); tot[0]=4; now=0; } void solve(int time){ tot[now^1]=0; for(int i=0;i<tot[now];i++){ drop t=d[now][i]; t.x+=t.dx; t.y+=t.dy; if(t.x<1 || t.x>r || t.y<1 || t.y>c) continue; if(a[t.x][t.y]) { a[t.x][t.y]++; }else{ d[now^1][tot[now^1]++]=drop{t.x,t.y,t.dx,t.dy}; } } for(int i=0;i<n;i++){ int x=xx[i],y=yy[i]; if(a[x][y]>4){ ans[i]= time; a[x][y]=0; for(int j=0;j<4;j++){ d[now^1][tot[now^1]++]=drop{x,y,dirx[j],diry[j]}; } } } now^=1; } int main() { #ifndef ONLINE_JUDGE freopen("aaa.txt","r",stdin); #endif while(~scanf("%d%d%d%d",&r,&c,&n,&time)){ init(); for(int i=0;i<n;i++){ int big; scanf("%d%d%d",&xx[i],&yy[i],&big); a[xx[i]][yy[i]]=big; res[xx[i]][yy[i]]=i; } scanf("%d%d",&sx,&sy); for(int i=0;i<4;i++){ d[0][i].x=sx; d[0][i].y=sy; d[0][i].dx=dirx[i]; d[0][i].dy=diry[i]; } for(int i=1;i<=time;i++){ solve(i); } for(int i=0;i<n;i++){ if(ans[i]){ printf("0 %d\n",ans[i]); }else{ printf("1 %d\n",a[xx[i]][yy[i]]); } } } return 0; }
相关文章推荐
- Material Design
- android省市区三级联动案例:(三)布局文件
- 求两个数的最大公约数和最小公倍数
- 对C标准中空白字符的理解(转)
- HDU 5336 XYZ and Drops
- Visual Studio Online 创建项目
- VS2010(64)+Qt4.8.0+PCL1.6.0+Vtk配置显示点云
- hdu5328 最长的连续的等比或等差数列
- Android内存泄漏分析及调试
- 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】
- select用法详解 http://blog.chinaunix.net/uid-23373524-id-2426940.html
- SVN Cleanup failed to process the following paths
- HDOJ 1022 Train Problem I(栈)
- poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】
- RSA ENCRYPT
- flexpaper全屏缩放后 浏览器滚动条失效
- 【leetcode】Linked List Cycle II
- HDU 5335 Walk Out
- 怎样VS2013下安装Qt5的插件
- 教你如何迅速秒杀掉:99%的海量数据处理面试题