C - Wandering Robot(ZOJ 4115)

Posted csgobestgameever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C - Wandering Robot(ZOJ 4115)相关的知识,希望对你有一定的参考价值。

Time Limit : 1 Second      Memory Limit : 65536 KB

Source : 第十届山东省ACM省赛

Problem Link : ZOJ 4115

Author : Revolver  Date : 2019-5-20

 

题意:

  一个机器人,在一个二维平面上,刚开始的坐标是(0,0),我们给他n和k两个值,分别代表一组指令有几个命令,和命令循环执行多少次,在这过程中,求这个机器人与原点之间最大的曼哈顿距离。

分析:

刚开始我们想的是最大的曼哈顿距离点肯定在最后一次循环中,我们交了一发wa了,后面我想到了这个测试数据11,3 RRRRRLLLLLL 发现最大的曼哈顿距离还可以是第一个循环中,于是我们分析出了最大的曼哈顿距离只可能在第一次循环或最后一次循环中。

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,i,j,k,a,b,x,y,max,p;
 6     string g;
 7     scanf("%lld",&n);
 8     for(i=0;i<n;i++)
 9     {
10         scanf("%lld%lld",&a,&b);
11         cin>>g;
12         x=0,y=0;
13         max=-999999;
14         for(j=0;j<a;j++)
15         {
16             if(g[j]==U)
17                 y++;
18             else if(g[j]==D)
19                 y--;
20             else if(g[j]==R)
21                 x++;
22             else if(g[j]==L)
23                 x--;
24             p=abs(x)+abs(y);
25             if(p>max)
26             {
27                 max=p;
28             }
29         }
30         x=x*(b-1);
31         y=y*(b-1);
32         for(j=0;j<a;j++)
33         {
34             if(g[j]==U)
35                 y++;
36             else if(g[j]==D)
37                 y--;
38             else if(g[j]==R)
39                 x++;
40             else if(g[j]==L)
41                 x--;
42             p=abs(x)+abs(y);
43             if(p>max)
44             {
45                 max=p;
46             }
47         }
48         printf("%lld\n",max);
49     }
50     return 0;
51     
52 }

 

以上是关于C - Wandering Robot(ZOJ 4115)的主要内容,如果未能解决你的问题,请参考以下文章

ZOJ - 3981 - Balloon Robot (思维)

POJ1573 ZOJ1708 UVA10116 UVALive5334 HDU1035 Robot MotionDFS+BFS

HDU 6229 Wandering Robots 找规律+离散化

AtCoder AGC029E Wandering TKHS

HDOJ6229Wandering Robots(马尔科夫链,set)

ACM-ICPC 2017 沈阳赛区现场赛 M. Wandering Robots && HDU 6229