关注
第二题蒙了一会,题主代码肯是对的,但总感觉自己不太踏实,后来索性证明一下~
--------------------------------------
直觉是动态规划, 子问题拆解碰到问题:
从第N层到第i层, 方式只可能有三条:
1)先到第i-1层, 再上一层, 即d[i-1]+1
2)先到i+1层, 再下一层, 即d[i+1]+1
3)如果i是偶数, 还可能是从i/2层坐电梯上来, 即d[i/2]+1
但这样d[i]依赖d[i+1]无法使用动态规划(d为最短路径函数)
下面证明方式2中到i+1层的方式一定是坐电梯直接到的, 否则一定不是最短路径:
要到i+1层同样只有三种方式:
1)从第i层上来, 不可能
快递员要到i层, 因此不可能是从i层走上来的, 除非傻了
2)从坐电梯到第i+1+k层走下来, 注意下楼只有一种方式, 一定是一路走下来
2.1)如果i为偶数, k定为奇数, 总路程s1为: d[(i+1+k)/2]+1+(k+1)
到第i/2层的最短路径一定小于等于先到d[i/2+(k+1)/2]再下楼到i/2层, 因为这是其中的一条路径
即, d[i/2] <= d[i/2+(k+1)/2] + (k+1)/2
因此先到i/2层再坐电梯到i层的路程s2有:
s2 = d[i/2]+1 <= d[i/2+(k+1)/2]+1+(k+1)/2 <d[(i+1+k)/2]+1+(k+1) = s1
所以此时s1一定不是最短路径
2.2)如果i为奇数, k一定为偶数, 总路程s1为: d[(i+1+k)/2]+1+(k+1)
到(i+1)/2层的最短路径一定小于等于其中的一条: 到(i+1)/2+k/2层然后再走下楼
即: d[(i+1)/2] <= d[(i+1)/2+k/2]+k/2
因此因此先到(i+1)/2层再坐电梯到i+1层再到第i层的路程s2有:
s2 = d[(i+1)/2] + 1 + 1 <= d[(i+1)/2+k/2]+k/2+1+1 <= d[(i+1+k)/2]+1+(k+1)=s1
当且仅当k=0时等号成立
2.3)综上, 最短路径中, 到i+1层然后下楼到i层只有一种情况, 即先坐电梯到i+1层然后走下来
查看原帖
点赞 1
相关推荐
04-26 12:49
四川外国语大学 外国语言文学类 点赞 评论 收藏
转发
投递字节跳动等公司10个岗位 > 字节跳动工作体验
点赞 评论 收藏
转发
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
385105次浏览 7649人参与
# 应届生初入职场,求建议 #
22050次浏览 538人参与
# 晒一晒我的offer #
2804361次浏览 49750人参与
# 在国企工作的人,躺平了吗? #
71852次浏览 869人参与
# 简历中的项目经历要怎么写 #
378743次浏览 6367人参与
# 非技术岗薪资爆料 #
7066次浏览 135人参与
# 你更愿意参加线上面试还是线下面试? #
6586次浏览 91人参与
# 非技术薪资爆料 #
63798次浏览 954人参与
# 华为求职进展汇总 #
439319次浏览 4418人参与
# 第一次面试 #
15829次浏览 240人参与
# 租房前辈的忠告 #
20910次浏览 1657人参与
# 应届生应该先就业还是先择业 #
12163次浏览 114人参与
# 安利/避雷我的岗位 #
122454次浏览 2752人参与
# 来聊聊机械薪资天花板是哪家 #
21019次浏览 167人参与
# 机械人怎么评价今年的华为 #
54211次浏览 444人参与
# 谈薪时HR压价该怎么应对 #
33080次浏览 204人参与
# 通信硬件薪资爆料 #
145631次浏览 1093人参与
# 毕业租房也有小确幸 #
19892次浏览 1253人参与
# 数据人offer决赛圈怎么选 #
36687次浏览 659人参与
# 正在实习的你,有转正机会吗? #
83468次浏览 866人参与