美团第二次笔试
最后一题有没有大佬教教
死磕了好久,感觉已经做的没问题了,最后还是爆零
我的思路是前缀和先算一轮最大的区间,对这个区间的所有数乘k,再重新算前缀和,对最小区间的所有数再乘k,最后累加
已经考虑到两次先后分开算了,不知道为什么还是一分没有,求大佬指点
死磕了好久,感觉已经做的没问题了,最后还是爆零
我的思路是前缀和先算一轮最大的区间,对这个区间的所有数乘k,再重新算前缀和,对最小区间的所有数再乘k,最后累加
已经考虑到两次先后分开算了,不知道为什么还是一分没有,求大佬指点
全部评论
k等于和小于0的时候策略会不一样吧,但是不知道为什么我也是0
有博弈的,第一次操作会影响第二次操作。比如第一次区间内可能有负数,如果第二次求得的区间仍然包含这个负数,那么这个负数其实是 * k^2 的。所以这个思路本身就不对。
考虑了k小于等于0,也是爆零,同样是用前缀和思想做的,自测测了n个都没问题
举个反例 [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不冤
相关推荐
11-17 14:23
海南热带海洋学院 Java 点赞 评论 收藏
分享