b129: 仲尼行走:周遊列國
標籤 : 2024復旦校內初選初賽
通過比率 : 8人/9人 ( 89% ) [非即時]
評分方式:
Tolerant

最近更新 : 2024-06-16 00:25

內容

$\def\bk{\color{#333333}}$約翰走路(英語:Johnnie Walker)又譯尊尼獲加(也有人叫他仲尼行走),是世界著名的蘇格蘭威士忌品牌,有200年的歷史,由帝亞吉歐在英國基爾馬諾克的釀酒廠釀造。

孔丘(前551年9月28日—前479年4月11日),子姓,孔氏,名丘,字仲尼,後代敬稱孔子或孔夫子,生於魯國陬邑(今曲阜市),祖先為宋國貴族,即殷商遺族後代,東周春秋末期魯國的教育家與哲學家,曾在魯國擔任官府要職,離開魯國後週遊列國十四年,最終魯哀公將其迎回魯國,賜封國老,稱「尼父」。孔子隨後開始編修《春秋》一書,是以無天子之名而行天子之事,號稱「素王」。孔子為儒家創始人兼主要代表人物,在儒家四大聖人之中被奉為「至聖」,其地位為儒家聖賢之中最高者。倡導仁義禮智信,以其言爲主的言論彙編《論語》為儒家重要經典之一,其思想對中國乃至整個東亞社會和以及海外華人分布圈等地區皆有深遠影響,此等地區也被稱爲儒家文化圈。孔子逝世後,後人尊稱其為至聖先師、萬世師表,並建孔廟以祭祀。

 

以上參考自維基百科,與本題內容幾乎無關,僅供科普與參考

https://zh.wikipedia.org/zh-tw/%E5%B0%8A%E5%B0%BC%E8%8E%B7%E5%8A%A0

https://zh.wikipedia.org/zh-tw/%E5%AD%94%E5%AD%90


大家都知道仲尼喜歡走路,他也曾在魯定公十三年春天離開魯國以後,與一些願意跟隨的弟子,展開長達十四年的旅程,也就是我們熟知的「周遊列國」。

現代傳奇遊戲開發師William聽過了孔子的故事後深受感動,於是創作出了「仲尼行走:周遊列國」這款2d像素風RPG自由冒險型遊戲。

 

這款遊戲由$N$格高$M$格寬的方形作為遊戲地圖($a$),左上角為(0, 0)、右下角為(N-1, M-1),遊戲中玩家將扮演的孔子擁有以下幾個初始數值:

HP:生命值

ST:力量值

VC:肺活量

SA:飽足感

其中各有著$hp,\ st,\ vc,\ sa$的上限值,各項的初始值也是這樣

孔子初始位置為地圖左上角(0, 0)並面向下

 

遊戲中每個時刻可以選擇執行向左轉('L')、向右轉('R')、跟向前走('W')這三個操作

其中的向左或右轉表示向左或右轉動視角90度,向前走表示朝著面向的方向走一格

我們可以假定不會有人嘗試往地圖外面走,畢竟這樣做是對遊戲製作者的不尊重

 

這個遊戲採取了時刻制的遊戲制度,也就是以下的任何事件都是每個時刻分開且獨立發生的

因為每一時刻將有一個操作發生,遊戲將會對於每個操作(L, R, W)完的那一時刻進行運算,採取的格子也是操作完後走上的格子

於是最一開始(出生時那刻)不會計算到以下的任何東西,而做完最後一個操作則將會依最後走上的該格進行運算

 

地圖中的每一格中會出現以下方塊的其中一種:

_:平地,在這格上很安全

T:樹,如果你嘗試走上這一格,會消耗$t$點ST砍樹並使該格變為平地並走上該格,如果ST不足$t$則將回到原地

M:怪,如果你嘗試走上這一格,會消耗$m$點ST打怪並使該格變為平地並走上該格,如果ST不足$m$則判定為打輸並回到原地,並因為與怪物的碰撞而損失$h$點HP

N:補血針,在這格上時將回復$n$點HP,並使補血針消失,該格變為平地

P:力量藥水,在這格上時將回復$p$點ST,並使力量藥水消失,該格變為平地

F:食物,在這格上時將回復$f$點SA,並使食物消失,該格變為平地

W:水池,在這格上時每一時刻將減少$wi$點VC,不在這格上時每一時刻將回復$wo$點VC

 

由於孔子初始位置(0, 0)保證該格為平地

 

對於角色數值,有以下性質(每一時刻計算):

在水中時每一時刻將減少$wi$點VC,不在水中時每一時刻將回復$wo$點VC(上面有提到了)

當這一時刻VC為0時(包括變成0的瞬間),HP將減少$v$點

在水中時每一時刻將減少$si$點SA,不在水中時每一時刻將減少$so$點SA,如果這個時刻走上食物格,將先回復$f$點SA再減少$so$點SA

當這一時刻SA為0時(包括變成0的瞬間),HP將減少$s$點,如果這個時刻走上補血針格,將先回復$n$點HP再減少$s$點HP

 

當HP歸0時,將死亡並結束遊戲

 

注意:

上述的「回復」與「減少」以上限值為上限、0為下限

 (例:在初始HP上限為10的情況下,在目前9點HP時回復2點並不會讓HP增加到11而是停在上限值10

在目前1點VC時減少2點並不會讓VC變成-1而是停在下限值0)

 


 

今天Chris決定來玩玩看這款傳奇遊戲,並一連串的執行了一共$K$個操作($op$)

此時的William在遊戲後台看到了Chris的神奇操作,發現Chris完全不懂得怎麼玩

不是一直撞樹就是一直死掉

於是他決定將Chris在遊戲中的問題記錄下來

 

William針對每次操作後的狀態進行記錄,每一行的內容都長得這樣:pos: ([x], [y]), HP: [a], ST: [b], VC: [c], SA: [d], Face: [e]

其中中括號內的數字是要填進去的內容

[x]填目前位置由上到下第幾格(0~N-1), [y]填由左到右第幾格(0~M-1)、[a]填目前HP、[b]填目前ST、[c]填目前VC、[d]填目前SA、[e]填目前面向的方向(上下左右分別為UDLR)

 

當死亡時,William會在下一行記錄下死因並不再紀錄後續的操作(會記錄到死亡當下的操作)

其中死因包含:

Died from fighting:撞到怪打輸扣血導致死亡

Died from drowning:VC降為0使HP降為0而導致死亡

Died from starving:SA降為0使HP降為0而導致死亡

Died from fighting and drowning:HP降為0時同時撞到怪打輸扣血以及VC降為0

Died from fighting and starving:HP降為0時同時撞到怪打輸扣血以及SA降為0

Died from drowning and starving:HP降為0時同時VC降為0以及SA降為0

Died from fighting and drowning and starving:HP降為0時同時撞到怪打輸扣血以及VC降為0以及SA降為0

(以上紀錄內容可參考範例輸入輸出)

 

如果到最後HP都沒有降到0,則William將紀錄完所有操作

給定上述所說的$N,\ M,\ a,\ hp,\ st,\ vc,\ sa,\ t,\ m,\ h,\ n,\ p,\ f,\ wi,\ wo,\ si,\ so,\ s,\ v,\ K,\ op$

請輸出William記錄下的內容

輸入說明

$\bk{\begin{array}{l}
N\ M\ hp\ st\ vc\ sa \\
t\ m\ h\ n\ p\ f\ wi\ wo\ si\ so\ s\ v \\
a_{0,\ 0}\ a_{0,\ 1}\ \cdots\ a_{0,\ M-1} \\
a_{1,\ 0}\ a_{1,\ 1}\ \cdots\ a_{1,\ M-1} \\
\cdots \\
a_{N-1,\ 0}\ a_{N-1,\ 1}\ \cdots\ a_{N-1,\ M-1} \\
K \\
op_0op_1\cdots op_{K-1}
\end{array}}$

輸出說明

$\bk{ans}$

(詳見題目最後兩段與範例輸出與提示)

範例輸入
# 範測1
3 2 3 3 3 3
1 1 1 1 1 1 1 2 1 0 1 1
_M
TN
WF
10
WWLWLWWLWL

# 範測2
5 1 10 10 10 8
5 10 0 10 10 10 0 0 2 2 10 10
_
W
T
P
M
4
WWWW

# 範測3
4 3 10 10 10 10
7 5 5 3 5 5 2 1 1 0 1 1
_WM
T_P
FWN
WT_
35
WLWLWRWRWLWLWLLWWRWWLWLWWWWWWWWWWWW
範例輸出
# 範測1
pos: (1, 0), HP: 3, ST: 2, VC: 3, SA: 3, Face: D
pos: (2, 0), HP: 3, ST: 2, VC: 2, SA: 2, Face: D
pos: (2, 0), HP: 3, ST: 2, VC: 1, SA: 1, Face: R
pos: (2, 1), HP: 3, ST: 2, VC: 3, SA: 2, Face: R
pos: (2, 1), HP: 3, ST: 2, VC: 3, SA: 2, Face: U
pos: (1, 1), HP: 3, ST: 2, VC: 3, SA: 2, Face: U
pos: (0, 1), HP: 3, ST: 1, VC: 3, SA: 2, Face: U
pos: (0, 1), HP: 3, ST: 1, VC: 3, SA: 2, Face: L
pos: (0, 0), HP: 3, ST: 1, VC: 3, SA: 2, Face: L
pos: (0, 0), HP: 3, ST: 1, VC: 3, SA: 2, Face: D

# 範測2
pos: (1, 0), HP: 10, ST: 10, VC: 10, SA: 6, Face: D
pos: (2, 0), HP: 10, ST: 5, VC: 10, SA: 4, Face: D
pos: (3, 0), HP: 10, ST: 10, VC: 10, SA: 2, Face: D
pos: (4, 0), HP: 0, ST: 0, VC: 10, SA: 0, Face: D
Died from starving

# 範測3
pos: (1, 0), HP: 10, ST: 3, VC: 10, SA: 10, Face: D
pos: (1, 0), HP: 10, ST: 3, VC: 10, SA: 10, Face: R
pos: (1, 1), HP: 10, ST: 3, VC: 10, SA: 10, Face: R
pos: (1, 1), HP: 10, ST: 3, VC: 10, SA: 10, Face: U
pos: (0, 1), HP: 10, ST: 3, VC: 8, SA: 9, Face: U
pos: (0, 1), HP: 10, ST: 3, VC: 6, SA: 8, Face: R
pos: (0, 1), HP: 5, ST: 3, VC: 4, SA: 7, Face: R
pos: (0, 1), HP: 5, ST: 3, VC: 2, SA: 6, Face: D
pos: (1, 1), HP: 5, ST: 3, VC: 3, SA: 6, Face: D
pos: (1, 1), HP: 5, ST: 3, VC: 4, SA: 6, Face: R
pos: (1, 2), HP: 5, ST: 8, VC: 5, SA: 6, Face: R
pos: (1, 2), HP: 5, ST: 8, VC: 6, SA: 6, Face: U
pos: (0, 2), HP: 5, ST: 3, VC: 7, SA: 6, Face: U
pos: (0, 2), HP: 5, ST: 3, VC: 8, SA: 6, Face: L
pos: (0, 2), HP: 5, ST: 3, VC: 9, SA: 6, Face: D
pos: (1, 2), HP: 5, ST: 3, VC: 10, SA: 6, Face: D
pos: (2, 2), HP: 8, ST: 3, VC: 10, SA: 6, Face: D
pos: (2, 2), HP: 8, ST: 3, VC: 10, SA: 6, Face: L
pos: (2, 1), HP: 8, ST: 3, VC: 8, SA: 5, Face: L
pos: (2, 0), HP: 8, ST: 3, VC: 9, SA: 10, Face: L
pos: (2, 0), HP: 8, ST: 3, VC: 10, SA: 10, Face: D
pos: (3, 0), HP: 8, ST: 3, VC: 8, SA: 9, Face: D
pos: (3, 0), HP: 8, ST: 3, VC: 6, SA: 8, Face: R
pos: (3, 0), HP: 8, ST: 3, VC: 4, SA: 7, Face: R
pos: (3, 0), HP: 8, ST: 3, VC: 2, SA: 6, Face: R
pos: (3, 0), HP: 7, ST: 3, VC: 0, SA: 5, Face: R
pos: (3, 0), HP: 6, ST: 3, VC: 0, SA: 4, Face: R
pos: (3, 0), HP: 5, ST: 3, VC: 0, SA: 3, Face: R
pos: (3, 0), HP: 4, ST: 3, VC: 0, SA: 2, Face: R
pos: (3, 0), HP: 3, ST: 3, VC: 0, SA: 1, Face: R
pos: (3, 0), HP: 1, ST: 3, VC: 0, SA: 0, Face: R
pos: (3, 0), HP: 0, ST: 3, VC: 0, SA: 0, Face: R
Died from drowning and starving
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (30%): 2.0s , <1M
公開 測資點#1 (30%): 2.0s , <1M
公開 測資點#2 (20%): 2.0s , <10M
公開 測資點#3 (20%): 2.0s , <10M
提示 :

範測可以自行畫出來

$\bk{\begin{array}{l}
\bullet\ \ 1 \le N,\ M,\ hp,\ st,\ vc,\ sa \le 10^3 \\
\bullet\ \ 0 \le t,\ m,\ h,\ n,\ p,\ f,\ wi,\ wo,\ si,\ so,\ s,\ v \le 10 \\
\bullet\ \ a_{i,\ j} \in \{'\_',\ 'T',\ 'M',\ 'N',\ 'P',\ 'F',\ 'W'\} \\
\bullet\ \ 1 \le K \le 10^6 \\
\bullet\ \ op_i \in \{'L',\ 'R',\ 'W'\}\\
\end{array}}$

操作不會嘗試走到地圖外

$\bk{\begin{array}{ccc} \hline
Subtask & Score & Extra\ Input\ Limits \\ \hline
\#0 & 30 & M = 1,\ op_i=\ 'W',\ h=wi=wo=si=so=0 \\
\#1 & 30 & M = 1,\ op_i=\ 'W' \\ 
\#2 & 20 & h=wi=wo=si=so=0 \\
\#3 & 20 & No\ extra\ limits \\ \hline
\end{array}}$

標籤:
2024復旦校內初選初賽
出處:
[管理者:
chrislaiisme (卍乂_第11屆ㄟ進階助教 a.k.a. ...)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」