题目链接:
http://codeforces.com/problemset/problem/748/C
题解:
题目大意:给你一系列机器人走的方向(每次均是最短路),问你机器人一定会经过几个点。
这题目可以算是一种套路题,一个机器人走的方向里面只有R(没有L),但是突然出现了L的话,如果这个点不是必须要经过的点,那么机器人的这种走法不满足最短路这个要求,因此,可以知道一定是经过了点的。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 2*1e5+10;
char s[maxn];
char dir[4]={'R','L','U','D'};
int num[4];
int main()
{
int n;
scanf("%d",&n);
scanf("%s",s);
int cnt=1;
for(int i=0;i<n;i++)
{
for(int j=0;j<4;j++)
{
if(s[i]==dir[j])
num[j]++;
if((num[0]>0&&num[1]>0)||(num[2]>0&&num[3]>0))
{
cnt++;
met(num,0);
i=i-1;
break;
}
}
}
printf("%d\n",cnt);
}