不会做题的小菜鸡 level
获赞
808
粉丝
44
关注
9
看过 TA
199
上海戏剧学院
2021
测试工程师
IP属地:上海
我的小脑瓜里装了许多小问题!
私信
关注
2021-07-20 19:07
已编辑
上海戏剧学院 测试工程师
思路 动态规划(k棋n层):dp(k,n)表示有k个棋子n层楼需要尝试的次数,题干要求的是dp(k,n)的结果,我们现在选择在第i层扔棋子 如果棋子碎了,则剩下k-1个棋子,此时找的楼层更新为i-1(低楼层),即应该继续尝试的次数为dp(k-1,i-1) 如果棋子没碎,则剩下k个棋子,此时要找的楼层更新为n-i(高楼层),即应该继续尝试的次数为dp(k,n-i) 这两者我们应该取一个大的值,因为是对于未知的i来说最保险的尝试次数,则应该取尝试次数现在应该为1+max(dp(k-1,i-1), dp(k,n-i)) 我们这么多从第i层选择扔棋子的方案跟层高n有关,所以想要得到其中最少的次数...
瑞257:如果觉得方法而有些难理解(至少我认为),可以尝试在坐标轴第一象限画出一个形成“X”图像的一条递增曲线与一条递减曲线,向左为X轴、向上为Y轴,递增曲线为dp[k-1][i-1],递减曲线为dp[k][n-i]。 当取两者之中的最大值时,等价于取垂直于X轴线段交于两直线的两点的最大值点。再取所有x=i的最小值,等价于求取图像上Y>=交点Y值的图像“V”的最小值。所以才有求取权衡值这个概念,即求取交点Y值。如果交点X为整数,那么最终会在第一个if时判断出(max中总有一个为最小值);如果交点X非整数,那即取最靠近交点的两个值(V曲线上的Y值)的最小值即可。
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务