hdu 5336 XYZ and Drops 2015 Multi-University Training Contest 4 10
2015-08-02 16:59
288 查看
题意:r*c的格子里面有些水珠,体积超过4就会爆炸并向四周发射一个小水珠,每秒前进一格。小水珠在同一个格子中与小水珠相互不影响,但是若有一个水珠,则小水珠融入水珠里面,水珠体积+1.问在(x,y)点0秒时刻爆炸,T秒之后格子里面水珠的状态。
暴力用队列模拟即可。
暴力用队列模拟即可。
#include <bits/stdc++.h> #include <map> #include <set> #include <queue> #include <stack> #include <cmath> #include <time.h> #include <vector> #include <cstdio> #include <string> #include <iomanip> ///cout << fixed << setprecision(13) << (double) x << endl; #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 #define ls rt << 1 #define rs rt << 1 | 1 #define pi acos(-1.0) #define eps 1e-8 #define Mp(a, b) make_pair(a, b) #define asd puts("asdasdasdasdasdf"); typedef long long ll; //typedef __int64 LL; const int inf = 0x3f3f3f3f; const int N = 100010; struct node{ int x, y, t, d; }c[110]; int n, m, k, T; int a[110][110]; int dir[4][2] = { 1, 0, -1, 0, 0, 1, 0, -1 }; queue <node> q, p; vector <node> v; int main() { while( ~scanf("%d%d%d%d", &n, &m, &k, &T) ) { memset( a, 0, sizeof( a ) ); for( int i = 1, x, y, z; i <= k; ++i ) { scanf("%d%d%d", &x, &y, &z); c[i].x = x, c[i].y = y; a[x][y] = z; } while( !q.empty() ) q.pop(); int x, y, t; scanf("%d%d", &x, &y); node tmp; tmp.x = x, tmp.y = y, tmp.t = 0; for( int i = 0; i < 4; ++i ) { tmp.d = i; q.push( tmp ); } while( !p.empty() ) q.pop(); for( int i = 1; i <= T; ++i ) { v.clear(); while( !q.empty() ) { tmp = q.front(); q.pop(); x = tmp.x + dir[tmp.d][0]; y = tmp.y + dir[tmp.d][1]; if( x > n || x == 0 || y > m || y == 0 ) continue; if( a[x][y] > 0 ) { a[x][y]++; if( a[x][y] == 5 ) { node sta; sta.x = x, sta.y = y, sta.t = tmp.t + 1, sta.d = -1; v.push_back( sta ); } } else { node nxt; nxt.x = x, nxt.y = y, nxt.t = tmp.t + 1, nxt.d = tmp.d; p.push( nxt ); } } int sz = v.size(); for( int j = 0; j < sz; ++j ) { tmp = v[j]; x = tmp.x, y = tmp.y, t = tmp.t; a[x][y] = -1 * tmp.t; for( int l = 0; l < 4; ++l ) { tmp.d = l; p.push( tmp ); } } while( !p.empty() ) { q.push( p.front() ); p.pop(); } } for( int i = 1; i <= k; ++i ) { x = c[i].x, y = c[i].y; if( a[x][y] > 0 ) printf("1 %d\n", a[x][y]); else printf("0 %d\n", -1 * a[x][y]); } } return 0; }
相关文章推荐
- OC学习笔记四-1 内存管理(Retain-Release)
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题
- Email 验证
- http://blog.csdn.net/uranus_wm/article/details/9838847
- reGeorg+proxychains-ng组合试用
- reGeorg+proxychains-ng组合试用
- 【LeetCode】217 & 219 - Contains Duplicate & Contains Duplicate II
- LeetCode:Climbing Stairs(DP)
- MainWindow简介
- tftp服务器连接开发板下载内核提示:retry count exceeded; starting again
- RuntimeError: Broken toolchain: cannot link a simple C program
- ORA-02291: integrity constraint (SYSTEM.FK1170E5C5328E4352) violated 解决办法
- 机器学习(吴恩达授课)课堂笔记(1)- Intro
- mvn generate-sources failed: Invalid SDK: Platform/API level 15 not available
- 2015 Multi-University Training Contest 3 hdu 5325 Crazy Bobo
- HDU 5335 || Walk Out || 2015 Multi-University Training Contest 4 简单题
- 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ
- 朴素贝叶斯分类算法(Naive Bayesian classification)
- hdu 5319 Painter
- HDU 3452 Bonsai(最小割)