赞
踩
题目:
题解:
交换相邻的横切或者竖切对答案无影响,越往前每次切的次数越少,越往后每次切的次数越多,所以每一次先切横竖切中代价最大的。
代码:
- long long minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
- sort(horizontalCut.begin(),horizontalCut.end(),[&](int a,int b)->bool{return a>b;});
- sort(verticalCut.begin(),verticalCut.end(),[&](int a,int b)->bool{return a>b;});
- m-=1;
- n-=1;
- int heng=1,shu=1;
- int i=0,j=0;
- long long ans=0;
- while(i<m||j<n){
- if(j==n||i<m&&horizontalCut[i]>=verticalCut[j]){
- ans+=1ll*shu*horizontalCut[i];
- i++;
- heng++;
- }else{
- ans+=1ll*heng*verticalCut[j];
- j++;
- shu++;
- }
- }
- return ans;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。