洛谷 P2628 冒險島

2022-04-06 06:55:43 字數 1520 閱讀 5838

冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子(1~6個數字之間),讓一種人物(棋子)在棋紙上從左至右的行走,從而模擬冒險的故事……

棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步數,比如擲3,就可以走3步。

路上有兩種特殊符號可以改變棋子的行走。

一種是「>」符號,一旦棋子走完了擲骰子的步數,最終停留在這個符號上,後面有緊跟著2個以上「>」,那麼棋子就可以獲得前進獎勵,可以沿著「>」一直一步步前進,直到遇到乙個不是「>」的符號位置停下來。

還有一種是「*」符號,一旦棋子走完了擲骰子的步數,最終停留在這個符號上,後面又緊跟著兩個以上「*」,就要受到後退懲罰,需要退後k步,這個k步就是從當前「*」開始的連續的「*」的數量。

每次擲數後,獎勵或懲罰至多一次,如果獎勵或懲罰後棋子又落在第二種特殊符號上,則不能再受到獎勵或懲罰。

如果走的棋子超出棋紙右邊界最後乙個符號,則停在最後乙個符號上;如果超出左邊界,則停在第乙個符號上。

若干次擲骰子後,請問遊戲中的人物(棋子)走到了哪步?離終點還差幾步?

輸入格式:

第一行為乙個字串s,字串中的每個字元表示棋紙的路的狀況。

第二行是乙個n,表示擲了n次骰子。

第三行是n個整數(1~6的範圍),表明擲了n次骰子得到的數字,數字之間有乙個空格。

輸出格式:

只有兩個數字,表明目前所在符號的序號和離終點符號的步數,數子中間有乙個空格。注意輸出末尾有換行。

輸入樣例#1: 複製

yhfa>>>fhsdfa***>>>foaoad

35 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#include

#include

#include

using

namespace

std;

string

s;int n,num,len,pos=-1

;int

main()

if(pos<0) pos=0

;

if(pos>=len) pos=len-1

; }

cout

<1

<<"

"<1-pos;

}

洛谷 P2628 冒險島 模擬 2 7

冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子 1 6個數字之間 讓一種人物 棋子 在棋紙上從左至右的行走,從而模擬冒險的故事 棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步數,比...

P2628 冒險島 AC於2018 10 31

原題 冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子 1 6個數字之間 讓一種人物 棋子 在棋紙上從左至右的行走,從而模擬冒險的故事 棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步...

洛谷 P3393 逃離殭屍島

題目描述 小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat 所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句...