dfs 1489 蜥蜴和地下室

2021-09-30 16:54:54 字數 1892 閱讀 1621

1 秒131,072 kb

10 分

2 級題

哈利喜歡玩角色扮演的電腦遊戲《蜥蜴和地下室》。此時,他正在扮演乙個魔術師。在最後一關,他必須和一排的弓箭手戰鬥。他唯一能消滅他們的辦法是乙個火球咒語。如果哈利用他的火球咒語攻擊第i個弓箭手(他們從左到右標記),這個弓箭手會失去a點生命值。同時,這個咒語使與第i個弓箭手左右相鄰的弓箭手(如果存在)分別失去b(1 ≤ b < a ≤ 10)點生命值。

因為兩個端點的弓箭手(即標記為1和n的弓箭手)與你相隔較遠,所以火球不能直接攻擊他們。但是哈利能用他的火球攻擊其他任何弓箭手。

每個弓箭手的生命值都已知。當乙個弓箭手的生命值小於0時,這個弓箭手會死亡。請求出哈利殺死所有的敵人所需使用的最少的火球數。

如果弓箭手已經死亡,哈利仍舊可以將他的火球扔向這個弓箭手。

收起

第一行包含3個整數 n, a, b (3 ≤ n ≤ 10; 1 ≤ b < a ≤ 10),第二行包含n個整數——h1,h2,...,hn (1 ≤ hi ≤ 15), hi 是第i個弓箭手所擁有的生命力。
以一行輸出t——所需要的最少的火球數。
3 2 1

2 2 2

3
題解:由於 1 和 n 不能直接攻擊,所以先直接攻擊 2,n-1,將他們消滅,然後從 2 開始搜尋到 n.

#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)

#define max 0x3f3f3f3f

#define u_max 1844674407370955161

#define l_max 9223372036854775807

#define i_max 2147483647

#define re register

#define pushup() tree[rt]=tree[rt<<1]+tree[rt<<1|1]

#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位

#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫

using namespace std;

inline int read()

while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}typedef long long ll;

const double pi = atan(1.)*4.;

const int m=1e3+5;

const int n=1e6+5;

int h[m],n,a,b,ans=i_max;

void dfs(int x,int num)

if(h[x-1]<0) // 從當前位置移動到 下乙個位置,充要條件是 h[x-1]<0

dfs(x+1,num);

int time1=0;

if(h[x-1]>=0)

int time2=h[x]/a+1; // time2 為將 x 位置的士兵消滅,需要 time2 次直接攻擊

if(h[x]>=0&&time2>time1)

}return ;

}int main()

dfs(2,0);

printf("%d\n",ans+sum);

return 0;

}

1489 蜥蜴和地下室 bfs

題目大意 輸入第一行包含3個整數 n,a,b 第二行輸入n只蜥蜴的生命值,你可以選擇編號為2 n的任意第i只蜥蜴進行火球術,對第i只蜥蜴造成a點傷害,對左右的蜥蜴造成b點傷害,當生命值 0時蜥蜴死亡 巨坑 但可以繼續攻擊,求殺死全部蜥蜴的最小攻擊次數。n和hi的範圍都比較小,考慮dfs。當是純dfs...

51Nod 1489 蜥蜴和地下室 DFS

第一次在51nod上用深搜.注意題目說的是血量小於0才死亡。我就把血量全部加一,最後判斷血量小於等於0 為的是避免剛開始把第乙個和最後乙個弄死的時候的誤差 include include include include include include include include includeu...

51Nod 1489 蜥蜴和地下室 (dfs)

1489 蜥蜴和地下室 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 哈利喜歡玩角色扮演的電腦遊戲 蜥蜴和地下室 此時,他正在扮演乙個魔術師。在最後一關,他必須和一排的弓箭手戰鬥。他唯一能消滅他們的辦法是乙個火球咒語。如果哈利用他的火球咒語...