1351C - Skier
题意:
NSWE代表上下左右4个方向,每次走一个单位,第一次走的路花费时间5,不是第一次走的路花费时间1,求最后所花时间
思路:
暴力嗷,假设是从原点开始走的,map记录一下就能随便写了
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t,ans;
pair<int,int> k;
string ss;
cin>>t;
while(t--)
{
ans=0;
cin>>ss;
map<pair<pair<int,int>,pair<int,int>>,bool>mp;
k.first=k.second=0;
for(int i=0; i<ss.length(); ++i)
{
pair<int,int> kk=k;
if(ss[i]=='W')
kk.first--;
else if(ss[i]=='E')
kk.first++;
else if(ss[i]=='N')
kk.second++;
else
kk.second--;
if(mp[make_pair(kk,k)]||mp[make_pair(k,kk)])
ans++;
else
{
ans+=5;
mp[make_pair(kk,k)]=mp[make_pair(k,kk)]=1;
}
k=kk;
}
cout<<ans<<endl;
}
return 0;
}