1. 程式人生 > >1499 [Noi2005] 瑰麗華爾茲 [DP][單調佇列優化]

1499 [Noi2005] 瑰麗華爾茲 [DP][單調佇列優化]

你跳過華爾茲嗎?當音樂響起,當你隨著旋律滑動舞步,是不是有一種漫步仙境的愜意?眾所周知,跳華爾茲時,最重要的是有好的音樂。但是很少有幾個人知道,世界上最偉大的鋼琴家一生都漂泊在大海上,他的名字叫丹尼•佈德曼•T.D.•檸檬•1900,朋友們都叫他1900。 1900在20世紀的第一年出生在往返於歐美的郵輪弗吉尼亞號上,很不幸他剛出生就被拋棄了,成了孤兒。1900孤獨的成長在弗吉尼亞號上,從未離開過這個搖晃的世界。也許是對他命運的補償,上帝派可愛的小天使艾米麗照顧他。可能是天使的點化,1900擁有不可思議的鋼琴天賦:從未有人教,從沒看過樂譜,但他卻能憑著自己的感覺彈出最沁人心脾的旋律。當1900的音樂獲得郵輪上所有人的歡迎時,他才8歲,而此時的他已經乘著海輪往返歐美大陸50餘次了。雖說是鋼琴奇才,但1900還是個孩子,他有著和一般男孩一樣的好奇和調皮,只不過更多一層浪漫的色彩罷了:這是一個風雨交加的夜晚,海風捲起層層巨浪拍打著弗吉尼亞號,郵輪隨著巨浪劇烈的搖擺。船上的新薩克斯手馬克斯•託尼暈船了,1900招呼託尼和他一起坐上舞廳裡的鋼琴,然後鬆開了固定鋼琴的閘,於是,鋼琴隨著海輪的傾斜滑動起來。準確的說,我們的主角1900、鋼琴、郵輪隨著1900的旋律一起跳起了華爾茲,隨著“嘣嚓嚓”的節奏,託尼的暈船症也奇蹟般的消失了。後來託尼在回憶錄上寫道:大海搖晃著我們使我們轉來轉去快速的掠過燈和傢俱我意識到我們正在和大海一起跳舞真是完美而瘋狂的舞者晚上在金色的地板上快樂的跳著華爾茲是不是很愜意呢?也許,我們忘記了一個人,那就是艾米麗,她可沒閒著:她必須在適當的時候施展魔法幫助1900,不讓鋼琴碰上舞廳裡的傢俱。不妨認為舞廳是一個N行M列的矩陣,矩陣中的某些方格上堆放了一些傢俱,其他的則是空地。鋼琴可以在空地上滑動,但不能撞上傢俱或滑出舞廳,否則會損壞鋼琴和傢俱,引來難纏的船長。每個時刻,鋼琴都會隨著船體傾斜的方向向相鄰的方格滑動一格,相鄰的方格可以是向東、向西、向南或向北的。而艾米麗可以選擇施魔法或不施魔法:如果不施魔法,則鋼琴會滑動;如果施魔法,則鋼琴會原地不動。艾米麗是個天使,她知道每段時間的船體的傾斜情況。她想使鋼琴在舞廳裡滑行路程儘量長,這樣1900會非常高興,同時也有利於治療託尼的暈船。但艾米麗還太小,不會算,所以希望你能幫助她。