题目:
题解:
交换相邻的横切或者竖切对答案无影响,越往前每次切的次数越少,越往后每次切的次数越多,所以每一次先切横竖切中代价最大的。
代码:
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;
}
};