【HDU 4452 Running Rabbits】简单模拟
两只兔子Tom和Jerry在一个n*n的格子区域跑,分别起始于(1,1)和(n,n),有各自的速度speed(格/小时)、初始方向dir(E、N、W、S)和左转周期turn(小时/次)。
各自每小时往E、N、W、S中一个方向跑speed格,每隔turn小时左转一次(即逆时针的下一个方向)。
行走中若第i步将碰壁,则第i步及剩余步改为原方向的相反方向(即折返)。
两只兔子若在第i小时到达同一点,则交换彼此的方向再走下一小时;若相遇时有兔子恰好该左转,则放弃此次左转。
第一眼像搜索,后来发现只是简单模拟~~
#include <cstdio>
#include <algorithm>
using namespace std; struct Status
{
int x,y,d,h;//坐标,方向。当前时间
}st,sj; int n,k;
char dir_t,dir_j;
int speed_t,speed_j;
int turn_t,turn_j; void go_next(Status &s,int speed)
{
s.h++;
int cnt=;
switch(s.d)//由于speed<n,所以最多只碰壁折返一次,并且两只兔子不会在一小时内相遇两次(但其实可能在走向下一个格子的过程中遇到。。。)
{
case :
while(s.y<n&&cnt<speed){s.y++; cnt++;}
if(cnt<speed)
{
s.y-=speed-cnt;
s.d=;
}break;
case :
while(s.x>&&cnt<speed){s.x--; cnt++;}
if(cnt<speed)
{
s.x+=speed-cnt;
s.d=;
}break;
case :
while(s.y>&&cnt<speed){s.y--; cnt++;}
if(cnt<speed)
{
s.y+=speed-cnt;
s.d=;
}break;
case :
while(s.x<n&&cnt<speed){s.x++; cnt++;}
if(cnt<speed)
{
s.x-=speed-cnt;
s.d=;
}
}
} int main()
{
freopen("4452.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
if(n==) break;
getchar();
scanf("%c",&dir_t);
scanf("%d%d",&speed_t,&turn_t);
getchar();
scanf("%c",&dir_j);
scanf("%d%d",&speed_j,&turn_j);
scanf("%d",&k); st.x=st.y=;
st.h=sj.h=;
sj.x=sj.y=n;
st.d=turn_t;
sj.d=turn_j;
switch(dir_t)
{
case 'E':st.d=;break;
case 'N':st.d=;break;
case 'W':st.d=;break;
case 'S':st.d=;break;
}
switch(dir_j)
{
case 'E':sj.d=;break;
case 'N':sj.d=;break;
case 'W':sj.d=;break;
case 'S':sj.d=;break;
} while(k--)
{
if(st.x==sj.x&&st.y==sj.y)
swap(st.d,sj.d);
else
{
if(st.h!=&&st.h%turn_t==)
st.d=(st.d+)%;
if(sj.h!=&&sj.h%turn_j==)
sj.d=(sj.d+)%;
}
go_next(st,speed_t);
go_next(sj,speed_j);
}
printf("%d %d\n",st.x,st.y);
printf("%d %d\n",sj.x,sj.y);
}
return ;
}
【HDU 4452 Running Rabbits】简单模拟的更多相关文章
- HDU 4452 Running Rabbits (模拟题)
题意: 有两只兔子,一只在左上角,一只在右上角,两只兔子有自己的移动速度(每小时),和初始移动方向. 现在有3种可能让他们转向:撞墙:移动过程中撞墙,掉头走未完成的路. 相碰: 两只兔子在K点整(即处 ...
- hdu 4452 Running Rabbits 模拟
Running RabbitsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- [模拟] hdu 4452 Running Rabbits
意甲冠军: 两个人在一个人(1,1),一个人(N,N) 要人人搬家每秒的速度v.而一个s代表移动s左转方向秒 特别值得注意的是假设壁,反弹.改变方向 例如,在(1,1),采取的一个步骤,以左(1,0) ...
- hdu 4858 容器的简单模拟
我用临接表模拟容器超时 #include<stdio.h> #include<string.h> #include<vector> using namespace ...
- HDU 4772 Zhuge Liang's Password (简单模拟题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4772 题面: Zhuge Liang's Password Time Limit: 2000/1000 ...
- 模拟 HDOJ 4552 Running Rabbits
题目传送门 /* 模拟:看懂题意,主要是碰壁后的转向,笔误2次 */ #include <cstdio> #include <algorithm> #include <c ...
- (hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数<=3,输出剩下的人 )
题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 4509 湫湫系列故事——减肥记II (简单模拟)
题意:一天一共有1440分钟,主人公每天有n件事要做,给出这n件事开始跟结束的时间,然后让你求出,空闲的时间的总分钟数是多少. 解题报告:简单模拟,只要开个一维数组标记那个每个分钟是否是有事的就可以了 ...
- java web学习总结(二十二) -------------------简单模拟SpringMVC
在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...
随机推荐
- unity3d 导出 Excel
我在unity里需要导出成Excel格式,试了一些方法,其中用c#的com组件的我还没成功不知道该怎么在unity里调用,(如果哪位大哥用别的方法在unity里成功了,可以交流下,最好给我一个小dem ...
- eclipse工具再学习
今天下午最后近1小时及晚上2个多小时,我都花费时间在工程环境配置上,自尊心被严重摧残,各种郁闷和抱怨.源头是我部分刷新代码后运行工程依赖的jar报错,后来找同事发现是因为我没更新pom.xml文件,重 ...
- Linux Ubuntu download
下载地址:http://www.ubuntu.com/download/ Ubuntu桌面用户版 符合用户个性的版本
- 使用Comparable接口的小例子
代码: public class Student implements Comparable<Student> { private int id; private String name; ...
- 格而知之9:一些关于GCD的笔记
1.最近在重读当年刚开始学习多线程时的笔记,发觉其中有一些地方还是比较容易模糊,于是整理这篇笔记记录一下. 执行方式和队列 2.队列用来存放管理要执行的任务,它分为并发队列(Concurrent Di ...
- 求高精度幂(java)
求高精度幂 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 对数值很大.精度很高的数进行高精度计算是一类十分常见的问题.比如,对国债进行计算就是属于这类问题. 现在要 ...
- Visual Studio® 2010 Web Deployment Projects站点编译生成bin同时发表插件
VS2010环境下: 1.Visual Studio® 2010 Web Deployment Projects下载地址: http://www.microsoft.com/downlo ...
- 使用java连接hive,并执行hive语句详解
安装hadoop 和 hive我就不多说了,网上太多文章 自己看去 首先,在机器上打开hiveservice hive --service hiveserver -p 50000 & 打开50 ...
- mysql binlog参数设置
1.mysql有许多系统变量,可以设置,系统变量设置不同,不同的系统将导致执行状态. 故mysql提供两组命令,分别查看系统设置和执行状态. 1.系统设置: SHOW [GLOBAL | SESSIO ...
- linux下SSH远程连接服务慢解决方案
1.适用命令及方案如下:[远程连接及执行命令]ssh -p22root@10.0.0.19ssh -p22 root@10.0.0.19 /sbin/ifconfig[远程拷贝:推送及拉取]scp - ...