zoukankan      html  css  js  c++  java
  • C. Skier

    Skier rides on a snowy field. Its movements can be described by a string of characters 'S', 'N', 'W', 'E' (which correspond to 11 meter movement in the south, north, west or east direction respectively).

    It is known that if he moves along a previously unvisited segment of a path (i.e. this segment of the path is visited the first time), then the time of such movement is 55 seconds. If he rolls along previously visited segment of a path (i.e., this segment of the path has been covered by his path before), then it takes 11 second.

    Find the skier's time to roll all the path.

    Input

    The first line contains an integer tt (1t1041≤t≤104) — the number of test cases in the input. Then tt test cases follow.

    Each set is given by one nonempty string of the characters 'S', 'N', 'W', 'E'. The length of the string does not exceed 105105 characters.

    The sum of the lengths of tt given lines over all test cases in the input does not exceed 105105.

    Output

    For each test case, print the desired path time in seconds.

    Example
    input
    Copy
    5
    NNN
    NS
    WWEN
    WWEE
    NWNWS
    
    output
    Copy
    15
    6
    16
    12
    25
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    #include <set>
    #include <queue>
    #include <map>
    #include <sstream>
    #include <cstdio>
    #include <cstring>
    #include <numeric>
    #include <cmath>
    #include <iomanip>
    #include <deque>
    #include <bitset>
    //#include <unordered_set>
    //#include <unordered_map>
    //#include <bits/stdc++.h>
    //#include <xfunctional>
    #define ll              long long
    #define PII             pair<int, int>
    #define rep(i,a,b)      for(int  i=a;i<=b;i++)
    #define dec(i,a,b)      for(int  i=a;i>=b;i--)
    #define pb              push_back
    #define mk              make_pair
    using namespace std;
    int dir[4][2] = { { 0,1 } ,{ 0,-1 },{ 1,0 },{ -1,0 } };
    const long long INF = 0x7f7f7f7f7f7f7f7f;
    const int inf = 0x3f3f3f3f;
    const double pi = 3.14159265358979323846;
    const int mod = 998244353;
    const int N = 2e5 + 5;
    //if(x<0 || x>=r || y<0 || y>=c)
    
    inline ll read()
    {
        ll x = 0; bool f = true; char c = getchar();
        while (c < '0' || c > '9') { if (c == '-') f = false; c = getchar(); }
        while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
        return f ? x : -x;
    }
    
    ll gcd(ll m, ll n)
    {
        return n == 0 ? m : gcd(n, m%n);
    }
    ll lcm(ll m, ll n)
    {
        return m*n / gcd(m, n);
    }
    
    int main()
    {
        int T;
        cin >> T;
        while (T--)
        {
            queue<char> q;
            string s;
            cin >> s;
            int res = 0;
            map<PII, set<PII>> mp;
            PII cur = { 0,0 };
            for (int i = 0; i < s.size(); i++)
            {
                PII t=cur;
                if (s[i] == 'N')
                    cur.second++;
                else if(s[i] == 'S')
                    cur.second--;
                else if (s[i] == 'E')
                    cur.first++;
                else if (s[i] == 'W')
                    cur.first--;
                if (mp[t].count(cur))
                {
                    res++;
                }
                else
                {
                    mp[t].insert(cur);
                    mp[cur].insert(t);
                    res += 5;
                }
            }
            cout << res << endl;
        }
        return 0;
    }
  • 相关阅读:
    设计模式
    jQuery回到顶部插件jQuery GoUp
    CentOS7+Tomcat 生产系统部署
    iOS 时间戳转换为时间
    iOS开发系列--Swift 3.0
    IOS
    iOS之宏定义#define
    #define和预编译指令
    iOS宏定义的使用与规范
    ios十进制、十六进制字符串,byte,data等之间的转换
  • 原文地址:https://www.cnblogs.com/dealer/p/12955216.html
Copyright © 2011-2022 走看看