#1 jinzemeng@2007-11-08 21:16:00
471
回复
删除
由于本人水平有限,只能按照题解把本题目当成DP的题目了,看到几天大家AC的很少,把题解贴上来,仅供参考,如果有哪位大牛能用数学或者其他方法AC请回复
《Ural的鹰蛋实验》算法说明
最容易想到的是二分贪心,但那是不对的。
应该用动规解:
举个例子,10层楼,2个蛋,那么就是要求a[10][2]
第一次试验有10种选择——1到10层
如果选第3层,最坏情况下当然E!=3,如果E<3,蛋就碎了(关键!),那么还需要a[2][1]次
如果E>3,那么还需要a[7][2]次,由于考虑最坏情况,取两个的最大值,再加1
如果n层楼,m个蛋,其实就是
for(i=1;i<=n;i++) a[n][m]=min{1+max{a[i-1][m-1],a[n-i][m]}}
当然还要注意剪枝。
1000层楼,最多需要10个蛋
#2 ysq@2007-11-09 02:51:00
474
回复
删除
多谢楼上^_^
我的这道题的思路大致如下,但是不知道为什么不对,帮忙纠错,谢谢阿。
首先,当蛋的个数不为一的时候,我们可以很容易得想到一件事,那就是第一个蛋应该在最中间的那层楼扔。这种想法和我们作二分法排序的时候所用到的方法相近。
然后,当蛋的个数=1时,没办法,为了节约,我们只好从下往上一个一个试
由此我们可以导一定的规律。。。
不知道对不对