码迷,mamicode.com
首页 > 其他好文 > 详细

C - Wandering Robot(ZOJ 4115)

时间:2019-05-20 21:14:18      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:evo   str   分析   指令   clu   online   link   name   机器人   

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)

标签:evo   str   分析   指令   clu   online   link   name   机器人   

原文地址:https://www.cnblogs.com/CSGOBESTGAMEEVER/p/10895258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!