UVA10934 藍橋杯測試次數 鷹蛋問題

2021-09-13 12:16:24 字數 1624 閱讀 4986

​ 以上三種問題都屬於一種問題,這裡我用鷹蛋問題為例進行分析

參考**:

只有這篇完全詮釋了我的所有問題。

我這裡只講述動態規劃的解決方案。請耐心看完

f[e

][k]

​f[e][k]​

f[e][k

]​代表有 e​e​

e​雞蛋 k​k​

k​層樓 找出答案的最小測試次數。

因為這個問題屬於運氣問題,故是不可控的,因為要求在最壞情況下,故f[e

][k]

=max

(f[e

−1][

i−1]

,f[e

][k−

i])+

1f[e][k]=max(f[e-1][i-1],f[e][k-i])+1

f[e][k

]=ma

x(f[

e−1]

[i−1

],f[

e][k

−i])

+1

上面就找出了有 e

ee個雞蛋 k

kk 層樓,在第i

ii層扔雞蛋的所需要的最小測試次數,(remember we need tomimimize the numberof drops in theworst case)

雖然運氣是不可控的,但是我們選取的i

ii是可控的,所以我們可以遍歷出所有的i,令f[e

][k]

f[e][k]

f[e][k

]選取其中最小的

遞推式f[e

][k]

=min

(max

(f[e

−1][

i−1]

,f[e

][k−

i])+

1)),

i∈[1

,k

]f[e][k]= min(+1)),i\in[1,k]

f[e][k

]=mi

n(ma

x(f[

e−1]

[i−1

],f[

e][k

−i])

+1))

,i∈[

1,k]

**記憶化搜尋即可

**:

#include

using

namespace std;

const

int inf=

0x3f3f3f3f

;int f[

1010][

1010];

bool iscal[

1010][

1010];

void

init()

intf

(int e,

int k)

iscal[e]

[k]=

true

;return f[e]

[k]=minn;

}int

main()

return0;

}

UVa 10934 主要是思路

描述 你有一棟n層的大樓和k個球,詢問至少需要多少次確定球的硬度 分析 對於球的硬度,即是在高度為i時,球沒碎掉,而在高度為i 1時,球碎掉了,此時便可以確定球的硬度為i.主要是對於題目的理解 最壞情況是在最後一層但你不知道 約束在於球的個數有限制 完了分類 能否破掉進行轉移 code includ...

UVA 10934 經典DP,「扔水球」

題目大致意思就是 有n個水球,它們沒有區別。現在從樓上扔它們,自然當樓層很高時,水球就會炸掉。而且水球炸是有乙個臨界點的,比如在仍下去炸了,那在4,5,6 扔下去都會炸,1 2 就不會炸。現在問,給你k個水球,最壞情況下至少需要扔多少次,就能確定這個臨界點。如果只有乙個水球,n層樓,那結果就是n次。...

UVa10934 裝滿水的氣球

uva10934 解析 設還剩i個氣球,j次機會時能夠測得的最大高度為d i j 換句話說,就是d i j 層內,可以用i個氣球j次機會測出氣球硬度為j 可以知道 例項 include includeusing namespace std const int maxk 100 const int m...