zoukankan      html  css  js  c++  java
  • Skier

    原题地址

    Skier

    考察知识点

    思维

    题意

    一个人经过之前没有滑过的路径一次花费5,滑过之前到的地方一次花费1,(每次只划一米),问你他滑完之后需要多长时间

    思路

    •  这题要注意判断是否滑过不是判断这个点是否滑过,而是到这个点的路径是否滑过
      
    •  剩下的就是使用map解决了
      

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef  long long LL;
    LL n , m , k;
    
    int main(){
            cin >>n;
            while(n--){
                string s;cin >>s;
                map<pair<LL ,LL> , LL > mp[10];
                LL cnt =0 ;
                int len =s.size();
                int u =0 ,r =0 ;
                for(int i=0;i<len;i++){
                    if(s[i]=='N'){
                        u++ ;
                        if(mp[1][{u,r}]||mp[2][{u-1,r}])cnt++;
                        else cnt+=5;
                        mp[1][{u,r}]=1,mp[2][{u-1,r}] =1 ;
                    }
                    if(s[i]=='S'){
                        u--;
                        if(mp[2][{u,r}]||mp[1][{u+1,r}])cnt++;
                        else cnt+=5;
                        mp[2][{u,r}]=mp[1][{u+1,r}] =1 ;
                    }
                    if(s[i]=='E'){
                        r--;
                        if(mp[3][{u,r}]||mp[4][{u,r+1}])cnt++;
                        else cnt+=5;
                        mp[3][{u,r}]=mp[4][{u,r+1}] =1 ;
                    }
                    if(s[i]=='W'){
                        r++;
                        if(mp[4][{u,r}]||mp[3][{u,r-1}])cnt++;
                        else cnt+=5;
    
                        mp[4][{u,r}]=mp[3][{u,r-1}] =1 ;
                    }
    //cout<<u<<" "<<r <<endl ;
                }
                cout <<cnt <<endl;
            }
            return 0;
    }
    
    
  • 相关阅读:
    ASP.NET Core学习——7
    ASP.NET Core学习——6
    ASP.NET Core学习——6
    ASP.NET Core学习——5
    ASP.NET Core学习——4
    平衡的括号(名字怪怪的~)
    找复合单词
    卡片游戏
    Ducci 序列
    卡片游戏O(∩_∩)O
  • 原文地址:https://www.cnblogs.com/gaohaoy/p/12928128.html
Copyright © 2011-2022 走看看