模拟水珠那个游戏。

小水珠超过边界会消失。

会有两个水珠同时到达一个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-模拟的更多相关文章

  1. Hdu 5336 XYZ and Drops (bfs 模拟)

    题目链接: Hdu 5336 XYZ and Drops 题目描述: 有一个n*m的格子矩阵,在一些小格子里面可能会有一些水珠,每个小水珠都有一个size.现在呢,游戏开始咯,在一个指定的空的小格子里 ...

  2. 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 ...

  3. HDU 5336——XYZ and Drops——————【广搜BFS】

    XYZ and Drops Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  4. HDU 5336 XYZ and Drops

    Problem Description XYZ is playing an interesting game called "drops". It is played on a r ...

  5. HDU 5336 XYZ and Drops 2015 Multi-University Training Contest 4 1010

    这题的题意是给你一幅图,图里面有水滴.每一个水滴都有质量,然后再给你一个起点,他会在一開始的时候向四周发射4个小水滴,假设小水滴撞上水滴,那么他们会融合,假设质量大于4了,那么就会爆炸,向四周射出质量 ...

  6. 2015 Multi-University Training Contest 4

    1001 Olympiad 签到题1. # include <iostream> # include <cstdio> using namespace std; ]={}; b ...

  7. NOIP2014酱油记

    尘埃落定,来补一下酱油记吧... day-1 晚上老师说有xyz的noip模拟赛,于是果断请假来做(shou)题(nve),题目真是理(S)性(X)愉(B)悦(K),然后就爆零了!感觉noip要爆零滚 ...

  8. 在PC上测试移动端网站和模拟手机浏览器的5大方

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  9. sqlmap --dns-domain模拟实践

    因为看到乌云的这一篇文章 http://drop.xbclub.org/static/drops/tips-5283.html 里面的提到的用sqlmap 的--dns-domain 进行dns 注入 ...

  10. 模拟--poj1835宇航员的故事

    这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...

随机推荐

  1. IDO分享 | 如何在centos下安装OpenCMS

    本次的opencms环境是在两台机器上搭建的. 一台服务器安装mySQL, 一台服务器安装jdk.tomcat.opencms.也可以将jdk.mySQL.tomcat.opencms安装在同一个机器 ...

  2. ruby 删除文件

    f = "app/assets/#{vm.uuid}.rrd" if FileTest::exist?(f) File.delete(f) end

  3. oracle REGEXP_SUBSTR函数

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcst ...

  4. MemSQL分布式架构介绍(二)

    接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...

  5. oracle的增删改查语句

    创建一个表: cteate table 表名(列1 类型, 列2 类型);查看表结构 desc表名添加一个字段 alter table 表名 add(列类型);修改字段类型 alter table 表 ...

  6. 【log4net】配置

    第一步在 AssemblyInfo  添加如下代码 第二步:在web.config添加如下代码: <log4net> <root> <level value=" ...

  7. hbase常用命令总结

    创建表:表名:csliyb:testuser列族:name 例子:create 'csliyb:testuser','name','age' 添加记录: put 'csliyb:testuser',' ...

  8. 05_最长公共子序列问题(LCS)

    问题来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题7: 问题描述:给两个子序列A和B,求长度最大的公共子序列.比如1,5,2,6,8,和2,3,5,6,9,8,4的最长公共子序 ...

  9. 百度地图的简单使用 ——html js

    一.简介 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地 ...

  10. Helloworld -SilverN

    /*Hello World*/ #include<iostream> #include<cstdio> #include<cstring> using namesp ...