冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子(1~6個數字之間),讓一種人物(棋子)在棋紙上從左至右的行走,從而模擬冒險的故事……
棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步數,比如擲3,就可以走3步。
路上有兩種特殊符號可以改變棋子的行走。
一種是「>」符號,一旦棋子走完了擲骰子的步數,最終停留在這個符號上,後面有緊跟著2個以上「>」,那麼棋子就可以獲得前進獎勵,可以沿著「>」一直一步步前進,直到遇到乙個不是「>」的符號位置停下來。
還有一種是「*」符號,一旦棋子走完了擲骰子的步數,最終停留在這個符號上,後面又緊跟著兩個以上「*」,就要受到後退懲罰,需要退後k步,這個k步就是從當前「*」開始的連續的「*」的數量。
每次擲數後,獎勵或懲罰至多一次,如果獎勵或懲罰後棋子又落在第二種特殊符號上,則不能再受到獎勵或懲罰。
如果走的棋子超出棋紙右邊界最後乙個符號,則停在最後乙個符號上;如果超出左邊界,則停在第乙個符號上。
若干次擲骰子後,請問遊戲中的人物(棋子)走到了哪步?離終點還差幾步?
輸入格式:
第一行為乙個字串s,字串中的每個字元表示棋紙的路的狀況。
第二行是乙個n,表示擲了n次骰子。
第三行是n個整數(1~6的範圍),表明擲了n次骰子得到的數字,數字之間有乙個空格。
輸出格式:
只有兩個數字,表明目前所在符號的序號和離終點符號的步數,數子中間有乙個空格。注意輸出末尾有換行。
輸入樣例#1
yhfa>>>fhsdfa***>>>foaoad輸出樣例#135 6 6
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。
樣例沒過。。但ac了。
#include #include #include #include using namespace std;
string str;
int n,a[100001],mmp[1000001],len,maxn(1<<20),f;
inline void lxydl()
else
}if(str[i]=='*')
else
} }}
int main()
lxydl();
a[1]--;
for(i=0;i<=n;i++)
else if(str[f]=='*')
}if(f<0)
if(f>len-1)
}f++;
cout
}
洛谷 P2628 冒險島
冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子 1 6個數字之間 讓一種人物 棋子 在棋紙上從左至右的行走,從而模擬冒險的故事 棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步數,比...
P2628 冒險島 AC於2018 10 31
原題 冒險島是費老師新開發的一種情景模擬電腦的遊戲,通過擲骰子 1 6個數字之間 讓一種人物 棋子 在棋紙上從左至右的行走,從而模擬冒險的故事 棋紙上有一條從左至右的很長的路,整條路是一連串符號組成,表明路的狀況,棋子必須在符號組成的路上行走。每擲一下骰子得到的數字,棋子就可以走擲得的數字所對應的步...
洛谷 P3393 逃離殭屍島
題目描述 小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat 所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句...