URAL--1223--DP(鹰蛋实验)

第一想法二分,不过是错的。

假设有i层j个蛋,在第k层做实验丢下一个蛋,这个蛋有两个状态1)碎了2)没碎。

1)当蛋碎了那我们就只需要找前k-1层,因为蛋碎了所以还有j-1个蛋

2)当蛋没有碎那我们就只需要找后面的i-k层,因为蛋没有碎所以还有j个蛋

因为是最坏情况,所以应该是两种情况中最大的一个

我们就可以得到动态转移方程了:

设f[i,j]表示有i层j个蛋做实验的最坏情况的最小植

所以f[i,j] = min{max{f[k-1,j-1],f[i-k,j]}+1} (1<=k<=i)

但这个方程的时间复杂度是O(N3),对10003是肯定要超时的。前面说了二分得到的答案不是最优,不过在二分的过程中我们发现1000层最多也就10个蛋,所以但蛋的个数大于10的时候项当于只有10个蛋。所以蛋只当它有10个,所以现在的时间复杂度为O(1000*1000*10)就不会超时了。

你可能感兴趣的:(URAL--1223--DP(鹰蛋实验))