• 洛谷 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;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    莎士比亚名言
    庄子名言
    Javascript: 通过图片url获取图片blob对象
    toast提示 封装
    maya模型导入UE4,如何做到等比导入
    GPU渲染和CPU渲染农场成本对比
    C4D渲线框
    C4D教程笔记——高科技线框3D模型全息投影 X-Wing Hologram Animation
    arnold和redshift渲染器
    使用Redshift渲染器,怎么选电脑配置!
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7894588.html
Copyright © 2020-2023  润新知