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;
    }
  • 相关阅读:
    C调用C++的动态库
    记“gorm查询没报错,但结果为空”的解决
    Android学习之路(一) Android Studio创建项目
    Windows程序消息机制浅析
    2021.5.1 学习小目标
    微信测试流程
    mysql使用正则表达式匹配中文所遇到的问题
    关于mysql的distinct用法
    一次性能测试的网络层面总结
    mongodb中直接根据某个字段更新另外一个字段值
  • 原文地址:https://www.cnblogs.com/dealer/p/12955216.html
Copyright © 2011-2022 走看看