zoukankan      html  css  js  c++  java
  • 洛谷 P2628 冒险岛

    题目背景

    冒险岛是费老师新开发的一种情景模拟电脑的游戏,通过掷骰子(1~6个数字之间),让一种人物(棋子)在棋纸上从左至右的行走,从而模拟冒险的故事……

    题目描述

    棋纸上有一条从左至右的很长的路,整条路是一连串符号组成,表明路的状况,棋子必须在符号组成的路上行走。每掷一下骰子得到的数字,棋子就可以走掷得的数字所对应的步数,比如掷3,就可以走3步。

    路上有两种特殊符号可以改变棋子的行走。

    一种是“>”符号,一旦棋子走完了掷骰子的步数最终停留在这个符号上后面有紧跟着2个以上“>”,那么棋子就可以获得前进奖励,可以沿着“>”一直一步步前进,直到遇到一个不是“>”的符号位置停下来。

    还有一种是“*”符号,一旦棋子走完了掷骰子的步数最终停留在这个符号上,后面又紧跟着两个以上“*”,就要受到后退惩罚,需要退后k步,这个k步就是从当前“*”开始的连续的“*”的数量。

    每次掷数后,奖励或惩罚至多一次,如果奖励或惩罚后棋子又落在第二种特殊符号上,则不能再受到奖励或惩罚。

    如果走的棋子超出棋纸右边界最后一个符号,则停在最后一个符号上;如果超出左边界,则停在第一个符号上。

    若干次掷骰子后,请问游戏中的人物(棋子)走到了哪步?离终点还差几步?

    输入输出格式

    输入格式:

     

    第一行为一个字符串s,字符串中的每个字符表示棋纸的路的状况。

    第二行是一个n,表示掷了n次骰子。

    第三行是n个整数(1~6的范围),表明掷了n次骰子得到的数字,数字之间有一个空格。

     

    输出格式:

     

    只有两个数字,表明目前所在符号的序号和离终点符号的步数,数子中间有一个空格。注意输出末尾有换行。

     

    输入输出样例

    输入样例#1: 复制
    yhfA>>>fhsdfa***>>>foaoad
    3
    5 6 6
    输出样例#1: 复制
    20 5

    说明

    【样例说明】

    在游戏中,第一次掷的是5,则走到第一个>的位置,获得奖励前进至左起第二个f处。第二次掷的是6,则走到*的位置,受惩罚退3步,至d处。第三次掷的是6,则走至左起第四个>号处,获奖励前进至f。最终棋子停留的符号是第20个(从左至右的数),离终点符号d(含)相差5步数。

    【数据范围】

    对于50%的数据,1<=s的长度<=255,0<=n<=1000。

    对于100%的数据,256<=s的长度<=1000000,0<=n<=100000。

    思路:模拟。

    注意:读入字符串可能有空格。这个题目太坑了。。。(╯‵□′)╯︵┻━┻

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    string s;
    int n,num,len,pos=-1;
    int main(){
        getline(cin,s);
        scanf("%d",&n);
        len=s.length()-1;
        for(int i=1;i<=n;i++){
            scanf("%d",&num);
            pos+=num;int tot=0;
            if(pos>=len)    pos=len-1;
            if(s[pos]=='>'&&s[pos+1]=='>'&&s[pos+2]=='>')
                while(s[pos]=='>')    pos++;
            else if(s[pos]=='*'&&s[pos+1]=='*'&&s[pos+2]=='*'){
                while(s[pos+tot]=='*')    tot++;
                pos-=tot;
            }
            if(pos<0)    pos=0;
            if(pos>=len)    pos=len-1;
        }
        cout<<pos+1<<" "<<len-1-pos;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    Leetcode951. Flip Equivalent Binary Trees翻转等价二叉树
    Leetcode938. Range Sum of BST二叉搜索树的范围和
    Leetcode962. Maximum Width最大宽度坡 Ramp
    STL容器-deque-双端队列
    Leetcode950. Reveal Cards In Increasing Order按递增顺序显示卡牌
    idea修改运行内存
    Web服务器进程连接数和请求连接数
    Vue问题总结
    Vue项目搭建过程
    去掉vue 中的代码规范检测(Eslint验证)
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7894588.html
Copyright © 2011-2022 走看看