noip2007普及組 守望者的逃離 題解

2021-08-28 16:09:44 字數 1436 閱讀 5660

惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者

在與尤迪安的交鋒中遭遇了圍殺,被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這

個荒島施咒,這座島很快就會沉下去。到那時,島上的所有人都會遇難。守望者的跑步速度為

17m/s,以這樣的速度是無法逃離荒島的。慶幸的是守望者擁有閃爍法術,可在1s內移動60m,不

過每次使用閃爍法術都會消耗魔法值10點。守望者的魔法值恢復的速度為4點/s,只有處在原地

休息狀態時才能恢復。

現在已知守望者的魔法初值m,他所在的初始位置與島的出口之間的距離s,島沉沒的時間t。

你的任務寫寫乙個程式幫助守望者計算如何在最短的時間內逃離荒島,若不能逃出,則輸出守望

者在剩下的時間能走的最遠距離。注意:守望者跑步、閃爍或休息活動均以秒(s)為單位,且每

次活動的持續時間為整數秒。距離的單位為公尺(m)。

在輸入檔案escape.in僅一行,包括空格隔開的三個非負整數m,s,t。

在輸出檔案escape.out包括兩行:

第1行為字串「yes」或「no」(區分大小寫),即守望者是否能逃離荒島。

第2行包含乙個整數。第一行為「yes」(區分大小寫)時表示守望者逃離荒島的最短時間;

第一行為「no」(區分大小寫)時表示守望者能走的最遠距離。

直接進入重點吧。

事實一:假設存在乙個最優解(就是在一定時間內跑得最遠),那麼在時間軸上畫出來大概像下面這個模樣:

對於1,因為我只是改變了動作的順序而已,原來是最優解肯定魔法就夠啦,所以我換一下順序,把休息的動作全部提到最前肯定魔法也是夠的;對於2,用腳趾想也知道距離肯定不會變。

這個事實說明了所有的最優解都可以用這樣乙個固定的模式構造出來:先跑,再停,最後的時間用來閃(當然不排除其他最優解,但我只需要乙個就好了,這樣能成為最優解就ok)。所以,我令f[t]表示t時間內最遠能跑多遠,再設t-i表示跑的時間,那麼i就是停加閃的時間了。這裡要來乙個貪心,但超級簡單。就是這樣乙個情形,你必須盡可能的少停,而是要多閃(因為時間之和是一定的,所以只要魔法夠就要閃),這樣才能跑的遠,下面,我令z(i)表示只停和閃,i時間內最遠跑多遠。式子在下面:

NOIP2007普及 守望者的逃離

傳送門 普及組的題目 很水。原來寫了乙個模擬不過好像狀態考慮的不全得了80,這次我們考慮一下dp做法。守衛者有兩種移動的方法,一種是閃現,一種是跑,我們可以把閃現和跑分開處理。首先只處理閃現的情況,這個時候要用貪心,能閃就閃,否則原地回藍即可。之後在處理跑步的情況,這種情況就要用dp了,方程很好推,...

2007noip普及組 守望者的逃離

惡魔獵手尤迫安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變 守望者在與尤迪安的交鋒中遭遇了圍殺.被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去,到那時,刀上的所有人都會遇難 守望者的跑步速度,為17m s,以這樣的速度是無法逃離荒島的。慶幸的是守望者...

NOIP2007 普及組 獎學金

獎學金 問題描述 某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的...