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;
    }
  • 相关阅读:
    注册InstallShield
    java学习——异常处理
    IntellJ IDEA下写JUnit
    【转】光盘和U盘安装win7和ubuntu14.04全步骤
    上汽笔试题
    小白面试
    mysql
    HOWTO: Setup XCode 6.1 to work with OpenCV3 libraries
    [转]在MacOS和iOS系统中使用OpenCV
    [转]在 Mac OS X 终端里使用 Solarized 配色方案
  • 原文地址:https://www.cnblogs.com/dealer/p/12955216.html
Copyright © 2011-2022 走看看