当前位置:   article > 正文

切蛋糕的最小总开销 II 交换论证法 贪心 leetcode 周赛406

切蛋糕的最小总开销 II 交换论证法 贪心 leetcode 周赛406

题目:

题解:

交换相邻的横切或者竖切对答案无影响,越往前每次切的次数越少,越往后每次切的次数越多,所以每一次先切横竖切中代价最大的。

代码:

  1. long long minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
  2. sort(horizontalCut.begin(),horizontalCut.end(),[&](int a,int b)->bool{return a>b;});
  3. sort(verticalCut.begin(),verticalCut.end(),[&](int a,int b)->bool{return a>b;});
  4. m-=1;
  5. n-=1;
  6. int heng=1,shu=1;
  7. int i=0,j=0;
  8. long long ans=0;
  9. while(i<m||j<n){
  10. if(j==n||i<m&&horizontalCut[i]>=verticalCut[j]){
  11. ans+=1ll*shu*horizontalCut[i];
  12. i++;
  13. heng++;
  14. }else{
  15. ans+=1ll*heng*verticalCut[j];
  16. j++;
  17. shu++;
  18. }
  19. }
  20. return ans;
  21. }
  22. };

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号