HDU5336-XYZ and Drops-模拟
模拟水珠那个游戏。
小水珠超过边界会消失。
会有两个水珠同时到达一个size=4大水珠的情况。要移动完统一爆炸
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm> //using namespace std; const int maxn = +;
int r,c,n,T; int dx[] = {,,,-};
int dy[] = {,-,,}; struct dp
{
int x,y;
int dir;
bool die;
dp(int _x,int _y,int _dir):x(_x),y(_y),dir(_dir){
die = false;
}
bool out()
{
return (x < || x > r || y < || y > c);
}
void kill()
{
die = true;
}
void move()
{
x += dx[dir];
y += dy[dir];
if(out())
{
kill();
return ;
}
}
bool alive()
{
return !die;
}
};
std::vector <dp> drops; struct wdp
{
int x,y;
int siz;
int t;
int id;
void display()
{
printf("%d %d\n",siz==-? :,siz==-?t:siz);
}
void add(int tim)
{
if(siz == -) return ;
siz += ;
}
void split(int tim)
{
if(siz > )
{
siz = -;
t = tim;
//printf("time:%d %d crack\n",tim,id);
for(int i=;i<;i++)
{
drops.push_back(dp(x,y,i));
}
}
}
bool alive()
{
return siz != -;
}
}waterdrop[maxn]; bool merge(dp &a,wdp &b)
{
return (a.x == b.x && a.y == b.y);
} void roll(int tim)
{
int cnt = drops.size();
for(int i=;i<cnt;i++) if(drops[i].alive())
{
drops[i].move();
if(!drops[i].alive()) continue;
//printf("drops: [%d,%d]\n",drops[i].x,drops[i].y);
for(int j=;j<n;j++) if(waterdrop[j].alive())
{
if(merge(drops[i],waterdrop[j]))
{
waterdrop[j].add(tim);
drops[i].kill();
break ;
}
}
}
for(int i=;i<n;i++) waterdrop[i].split(tim);
} int main()
{
//freopen("input.txt","r",stdin);
while(~scanf("%d%d%d%d",&r,&c,&n,&T))
{
int x,y,siz;
drops.clear();
for(int i=;i<n;i++)
{
scanf("%d%d%d",&x,&y,&siz);
waterdrop[i].x = x;
waterdrop[i].y = y;
waterdrop[i].siz = siz;
waterdrop[i].id = i+;
}
scanf("%d%d",&x,&y);
for(int i=;i<;i++)
{
drops.push_back(dp(x,y,i));
}
for(int i=;i<=T;i++)
{
roll(i);
}
for(int i=;i<n;i++)
{
waterdrop[i].display();
}
}
}
想到了大一刚开始做的那个傻x坦克大战- -当时写一个判断子弹写半天
HDU5336-XYZ and Drops-模拟的更多相关文章
- Hdu 5336 XYZ and Drops (bfs 模拟)
题目链接: Hdu 5336 XYZ and Drops 题目描述: 有一个n*m的格子矩阵,在一些小格子里面可能会有一些水珠,每个小水珠都有一个size.现在呢,游戏开始咯,在一个指定的空的小格子里 ...
- 2015 Multi-University Training Contest 4 hdu 5336 XYZ and Drops
XYZ and Drops Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- HDU 5336——XYZ and Drops——————【广搜BFS】
XYZ and Drops Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- HDU 5336 XYZ and Drops
Problem Description XYZ is playing an interesting game called "drops". It is played on a r ...
- HDU 5336 XYZ and Drops 2015 Multi-University Training Contest 4 1010
这题的题意是给你一幅图,图里面有水滴.每一个水滴都有质量,然后再给你一个起点,他会在一開始的时候向四周发射4个小水滴,假设小水滴撞上水滴,那么他们会融合,假设质量大于4了,那么就会爆炸,向四周射出质量 ...
- 2015 Multi-University Training Contest 4
1001 Olympiad 签到题1. # include <iostream> # include <cstdio> using namespace std; ]={}; b ...
- NOIP2014酱油记
尘埃落定,来补一下酱油记吧... day-1 晚上老师说有xyz的noip模拟赛,于是果断请假来做(shou)题(nve),题目真是理(S)性(X)愉(B)悦(K),然后就爆零了!感觉noip要爆零滚 ...
- 在PC上测试移动端网站和模拟手机浏览器的5大方
查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...
- sqlmap --dns-domain模拟实践
因为看到乌云的这一篇文章 http://drop.xbclub.org/static/drops/tips-5283.html 里面的提到的用sqlmap 的--dns-domain 进行dns 注入 ...
- 模拟--poj1835宇航员的故事
这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...
随机推荐
- 使用MongoDB C#官方驱动操作MongoDB
想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类似.这里我们先用官方提供的mongo-csharp-dri ...
- 设计模式C#实现(八)——原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.(要创建一个对象,这个对象为实现原型接口,方法是原型克隆.克隆只是方法而不是原型模式的目的,创建对象才是目的) UML类图: ...
- JavaScript中的直接量与初始器的区别
很多代码优化及公司规范都会提到 写对象不应该 var obj = new Object() 而应该 var obj = {} 写数组不应该 var arr = new Array() 而应该 var ...
- C语言关键字详解
相对于其他语言来说,C语言的关键字算是少的了.在C98中关键子总共只有32个,我们来分析一下每个关键字在C语言中它独特的作用. 1.关于数据类型的关键字 (1) char :声明字符型变量或函数 ( ...
- 获取bing每日图片
http://global.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US 其中idx表示倒数第几张图片 ...
- Hive UDF’S addMonths
our project use hive 0.10 , and in the hiveql , we need use addMonths function builtin in hive-0.11. ...
- [转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
本文转自:http://blog.csdn.net/ohmygirl/article/details/17849983 上文( http://blog.csdn.net/ohmygirl/articl ...
- openfire+asmack搭建的安卓即时通讯(四) 15.4.10
之前的教程不知道你们成功了没,,,没成功可以问我啊=-= 第四篇博文是要实现发送消息的功能. 首先在我们登陆后的活动的layout里添加这样的两个控件,一个EditText和一个Button用于发送数 ...
- 【温故而知新-Javascript】为DOM元素设置样式
1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleS ...
- 【转载】eclipse插件安装
原文:http://blog.csdn.net/dylan619/article/details/46839941 原来的eclipse3.7安装了太多插件后,m2e怎么也安装不成功,因此今天重新下载 ...