51Nod1489 蜥蜴和地下室(dfs)

2021-08-22 14:41:12 字數 1332 閱讀 5866

//1489蜥蜴和地下室

/*先處理第乙個弓箭手和最後乙個,

中間的弓箭手x有兩種被消滅的方法,

假如打死第x-1個弓箭手後,x沒有死。

那麼第一種是通過直接***,

第二種是通過攻擊x+1的弓箭手*/

#include

#include

using namespace std;

#define maxn 30

#define inf 0x3f3f3f3f

typedef long long ll;

int n,a,b,a[maxn],tmp=inf;

ll ans=0;

void dfs(int

x,int num) //x是當前弓箭手的序號,num是當前釋放的火焰的數目

int t=0;

/*每一次向後搜尋都要保證x-1為負數

前面乙個還沒死,只能通過打後面乙個附帶殺死x-1*/

if(a[x-1]<0) dfs(x+1,num);

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

//假如打爆x-1後x還活著,那麼打x次數一定還要大於t(殺死前面乙個)

inttime=a[x]/a+1;

if(time>t&&a[x]>=0)

}return ;

}int main()

//處理中間的

dfs(1,0);

if(tmp!=inf)

cout0;}

wa了,用貪心寫的,後來想想這種寫法並不對,應該是一道深搜題。

//1489蜥蜴和地下室

#include

#include

using namespace std;

#define maxn 30

typedef long

long ll;

int n,a,b;

ll ans=0;

typedef struct nodenode;

//判斷是不是整數

bool isinterger(double x)

bool cmp(node a,node b)

node a[maxn];

int main()

}//solve

sort(a+1,a+n-2,cmp);

for(int i=1;i<=n-2;i++)

}//a[0] and a[n-1]

if(n>3)

while(a[n-1].value>=0)

}else

}//print

cout0;}

51Nod 1489 蜥蜴和地下室

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

51Nod 1489 蜥蜴和地下室

這道題 一開始想的是貪心 但是想歪了 每次打對傷害總體貢獻最大的乙個 因為小資料 所以隨便怎麼搞 然後 wa了幾發 又想到小資料列舉還能有什麼 於是dfs搜尋 這道我想的是列舉搜尋路徑 因為能對當前loc位置產生傷害只能有三個位置loc 1,loc,loc 1 所以在打後面的敵人之前 可以把他前面的...

51nod 1489蜥蜴和地下室

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