動態規劃 貪心演算法 守望者的逃離

2021-09-27 07:12:16 字數 2360 閱讀 4007

惡魔獵手尤迫安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變:守望者在與尤迪安的交鋒中遭遇了圍殺.被困在乙個荒蕪的大島上。為了殺死守望者,尤迪安開始對這個荒島施咒,這座島很快就會沉下去,到那時,刀上的所有人都會遇難:守望者的跑步速度,為17m/s, 以這樣的速度是無法逃離荒島的。慶幸的是守望者擁有閃爍法術,可在1s內移動60m,不過每次使用閃爍法術都會消耗魔法值10點。守望者的魔法值恢復的速度為4點/s,只有處在原地休息狀態時才能恢復。

現在已知守望者的魔法初值m,他所在的初始位置與島的出口之間的距離s,島沉沒的時間t。你的任務是寫乙個程式幫助守望者計算如何在最短的時間內逃離荒島,若不能逃出,則輸出守望者在剩下的時間內能走的最遠距離。注意:守望者跑步、閃爍或休息活動均以秒(s)為單位。且每次活動的持續時間為整數秒。距離的單位為公尺(m)。

輸入描述

input

輸入僅一行,包括空格隔開的三個非負整數m,s,t。

輸出描述

output

輸出包含兩行:

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

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

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

樣本輸入

input example

39 200 4

樣本輸出

output example

no197

#include#includeusing namespace std;

int time, run, m;

int maxrun=0;

int mintime=-1;

class node

node(int x, int m, int t)

void addchild()

else addchild60();

} }

else

else addchild60();

} }} void addchild0()

if ((child0.t==time)&&child0.x>maxrun) maxrun = child0.x;

child0.addchild();

child.push_back(child0);

//printf("t=%d x=%d m=%d\n", child.back().t, child.back().x, child.back().m);

} void addchild17()

if ((child17.t==time)&&child17.x>maxrun) maxrun = child17.x;

child17.addchild();

child.push_back(child17);

//printf("t=%d x=%d m=%d\n", child.back().t, child.back().x, child.back().m);

} void addchild60()

if ((child60.t==time)&&child60.x>maxrun) maxrun = child60.x;

child60.addchild();

child.push_back(child60);

//printf("t=%d x=%d m=%d\n", child.back().t, child.back().x, child.back().m);

}};int main()

while(run-run>=120&&time-t>=7)

case 8:

case 7:

case 6:

case 5:

case 4:

case 3:

case 2:

case 1:

case 0:

} } //node start(0, m, 0);

node start(run,m,t);

if(run>=run) mintime=t;

else if(t>=time) maxrun=run;

else start.addchild();

if (mintime!=-1)

printf("yes\n%d\n",mintime); //printf("能逃出,最短時間為%d秒",mintime);

else printf("no\n%d\n",maxrun);//else printf("不能逃出,在剩餘時間內最多跑%d公尺\n", runmax[time]);

守望者的逃離(動態規劃)

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

守望者的逃離(貪心)

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

守望者的逃離 (貪心)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 惡魔獵手尤迪安野心勃勃,他背叛了暗夜精靈,率領深藏在海底的娜迦族企圖叛變。守望者在與尤迪安的交鋒中遭遇了圍殺,被困在乙個荒蕪的大島上。為了殺死守望者,尤迪...