2013杭州网络赛C题HDU 4640(模拟)
The Donkey of Gui Zhou
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 389 Accepted Submission(s): 153

The donkey lived happily until it saw a tiger far away. The donkey had never seen a tiger ,and the tiger had never seen a donkey. Both of them were frightened and wanted to escape from each other. So they started running fast. Because they were scared, they were running in a way that didn't make any sense. Each step they moved to the next cell in their running direction, but they couldn't get out of the forest. And because they both wanted to go to new places, the donkey would never stepped into a cell which had already been visited by itself, and the tiger acted the same way. Both the donkey and the tiger ran in a random direction at the beginning and they always had the same speed. They would not change their directions until they couldn't run straight ahead any more. If they couldn't go ahead any more ,they changed their directions immediately. When changing direction, the donkey always turned right and the tiger always turned left. If they made a turn and still couldn't go ahead, they would stop running and stayed where they were, without trying to make another turn. Now given their starting positions and directions, please count whether they would meet in a cell.
In each test case:
First line is an integer N, meaning that the forest is a N×N grid.
The second line contains three integers R, C and D, meaning that the donkey is in the cell (R,C) when they started running, and it's original direction is D. D can be 0, 1, 2 or 3. 0 means east, 1 means south , 2 means west, and 3 means north.
The third line has the same format and meaning as the second line, but it is for the tiger.
The input ends with N = 0. ( 2 <= N <= 1000, 0 <= R, C < N)
0 0 0
0 1 2
4
0 1 0
3 2 0
0
1 3
感想
:现在才发现当时自己把题目读复杂了,怪不得自己搞了半天最后还是WA了。题意是王道,题意理解错了都是扯淡。好在我看见这个模拟水题之后想到了以前做的那两个兔子的模拟,和吉吉说了下,吉吉后来拿了一血,虽然不早,但毕竟是一血。
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std; int dir[4][2]= //往东南西北四个方向
{
{0,1},{1,0},{0,-1},{-1,0}
};
int visidon[1005][1005];
int visitig[1005][1005]; int main()
{
int n,i,j;
int donx,dony,tigx,tigy,pdon,ptig;
while(scanf("%d",&n)&&n)
{
memset(visidon,0,sizeof(visidon));
memset(visitig,0,sizeof(visitig));
scanf("%d%d%d",&donx,&dony,&pdon); //驴子的坐标与方向
scanf("%d%d%d",&tigx,&tigy,&ptig); //老虎的坐标与方向
visidon[donx][dony]=1;
visitig[tigx][tigy]=1;
int flag=0;
int fla1=0,fla2=0;//代表驴子和老虎不能转向
if(donx==tigx&&dony==tigy) //开始就在一起,直接输出
{
cout<<donx<<" "<<dony<<endl;
continue;
}
else
{
while(1)
{
if(fla1&&fla2)
{
break;
}
int cx1,cy1,cx2,cy2;
cx1=donx,cy1=dony,cx2=tigx,cy2=tigy;
if(!fla1) //驴子还可以走
{
cx1=donx+dir[pdon][0];
cy1=dony+dir[pdon][1];
}
if(!fla2) //老虎还可以走
{
cx2=tigx+dir[ptig][0];
cy2=tigy+dir[ptig][1];
} if(!fla1) //驴子还可以走
{
if(cx1>=0&&cx1<n&&cy1>=0&&cy1<n&&!visidon[cx1][cy1]) //可以沿着方向走
{
donx=donx+dir[pdon][0];
dony=dony+dir[pdon][1];
visidon[donx][dony]=1;
//cout<<"驴子:"<<donx<<" "<<dony<<endl;
}
else //转了一次方向
{
pdon=(pdon+1+4)%4;
cx1=donx+dir[pdon][0];
cy1=dony+dir[pdon][1];
if(cx1>=0&&cx1<n&&cy1>=0&&cy1<n&&!visidon[cx1][cy1]) //可以沿着方向走
{
donx=donx+dir[pdon][0];
dony=dony+dir[pdon][1];
visidon[donx][dony]=1;
//cout<<"驴子:"<<donx<<" "<<dony<<endl;
}
else
fla1=1;
//转了一次方向还是不能走,那就停下来
}
} if(!fla2) //老虎还可以走
{
if(cx2>=0&&cx2<n&&cy2>=0&&cy2<n&&!visitig[cx2][cy2])
{
tigx=tigx+dir[ptig][0];
tigy=tigy+dir[ptig][1];
visitig[tigx][tigy]=1;
//cout<<"老虎:"<<tigx<<" "<<tigy<<endl;
}
else
{
ptig=(ptig-1+4)%4;
cx2=tigx+dir[ptig][0];
cy2=tigy+dir[ptig][1];
if(cx2>=0&&cx2<n&&cy2>=0&&cy2<n&&!visitig[cx2][cy2])
{
tigx=tigx+dir[ptig][0];
tigy=tigy+dir[ptig][1];
visitig[tigx][tigy]=1;
//cout<<"老虎:"<<tigx<<" "<<tigy<<endl;
}
else
fla2=1;
}
}
if(donx==tigx&&dony==tigy) //说明撞在一起
{
flag=1;
break;
}
}
if(!flag)
puts("-1");
else
{
printf("%d %d\n",donx,dony);
}
}
}
return 0;
}
2013杭州网络赛C题HDU 4640(模拟)的更多相关文章
- 2013杭州网络赛D题HDU 4741(计算几何 解三元一次方程组)
Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4747 Mex (2013杭州网络赛1010题,线段树)
Mex Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- HDU 4741 Save Labman No.004 (2013杭州网络赛1004题,求三维空间异面直线的距离及最近点)
Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 4739 Zhuge Liang's Mines (2013杭州网络赛1002题)
Zhuge Liang's Mines Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU 4745 Two Rabbits (2013杭州网络赛1008,最长回文子串)
Two Rabbits Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4762 Cut the Cake (2013长春网络赛1004题,公式题)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 4768 Flyer (2013长春网络赛1010题,二分)
Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)
Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Oth ...
随机推荐
- 全面理解js面向对象
前言 当今 JavaScript 大行其道,各种应用对其依赖日深.web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而忽略了对原生 JavaScript 的学 ...
- ASP.NET -- repeater控件的使用
转载自网络-原网址[http://blog.csdn.net/haitaodoit/article/details/7021214] repeater绑定数据: protected void Page ...
- 五子棋Web版的开发(一)---搭建IDEA SSH环境
最近公司都没啥事,我在完成了控制台版的本地五子棋后(github地址:https://github.com/lkq51/wuziqi_console2),想将他升级成为一个web版的五子棋游戏.因为公 ...
- ACM比赛
Description A soldier wants to buy w bananas in the shop. He has to pay k dollars for the first bana ...
- Linux中ssh的免密码登陆
原理: Hadoop的各个节点要实时的进行各种通信的,ssh就是能让各个节点免密码的相互访问相互通信. 操作步骤: 这里用的加密方式是非对称的加密方式,具体的操作是: <1>执行命令ssh ...
- Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)
关于依赖注入, 这篇博文写的非常简单易懂. https://github.com/android-cn/blog/tree/master/java/dependency-injection 此外, 博 ...
- bzoj 1042: [HAOI2008]硬币购物 dp+容斥原理
题目链接 1042: [HAOI2008]硬币购物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1706 Solved: 985[Submit][ ...
- 怪兽z主机 驱动集
这里给买家朋友送上我们主机的驱动包. 1.主板驱动. 访问密码 f334 http://yunpan.cn/QNTGxehcnLBW5 2.AMD显卡催化剂 amd catalyst(没装的话,无法 ...
- Android之ListView性能优化
ListView滚动速度优化主要可以应用以下几点方法来实现: 1.使用Adapter提供的convertView convertView是Adapter提供的视图缓存机制,当第一次显示数据的时候,ad ...
- zookeeper 数据存储特点
zookeeper 和elasticseaarch 数据存储特点: 1.zookeeper; [Zookeeper提供的一致性是弱一致性,首先数据的复制有如下规则:zookeeper确保对znode树 ...