美团第二次笔试

最后一题有没有大佬教教
死磕了好久,感觉已经做的没问题了,最后还是爆零
我的思路是前缀和先算一轮最大的区间,对这个区间的所有数乘k,再重新算前缀和,对最小区间的所有数再乘k,最后累加
已经考虑到两次先后分开算了,不知道为什么还是一分没有,求大佬指点
全部评论
k等于和小于0的时候策略会不一样吧,但是不知道为什么我也是0
1 回复 分享
发布于 08-17 21:15 日本
有博弈的,第一次操作会影响第二次操作。比如第一次区间内可能有负数,如果第二次求得的区间仍然包含这个负数,那么这个负数其实是 * k^2 的。所以这个思路本身就不对。
点赞 回复 分享
发布于 08-17 21:37 上海
考虑了k小于等于0,也是爆零,同样是用前缀和思想做的,自测测了n个都没问题
点赞 回复 分享
发布于 08-17 21:52 陕西
举个反例 [10,-9,10] k = 2 ; 按照你的算法 ,第一轮会选择 [1,3] 变成 [20,-18,20] ,第二轮 选择区间[2,2], 变成[20,-36,20];sum = 4; 但最优解是第一轮[1,1] 变成[20,-9,10] 第二轮[2,2]变成[20,-18,10] sum = 12 > 4 。 所以你的方法就算k > 0 这种情况下也是错的, 爆0不冤
点赞 回复 分享
发布于 08-18 09:47 浙江

相关推荐

10-14 13:25
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务