题意:
有n个物品,第i个物品有属性a(i)和b(i),
一次操作你可以将进行:
1.将某个物品的a(i)减掉1
2.将某个物品的b(i)减掉1
3.将某个物品的a(i)和b(i)都减掉1
问令a(1)=a(2)=…a(n),且b(1)=b(2)=…b(n)的最小操作次数
注意:最后a(i)不需要等于b(i)
数据范围:n<=50
解法:
傻逼了
因为操作只有减法没有加法,所以最后a(i)的值一定是所有a(i)中的最小值mia,b(i)同理。
所以对于每个物品,需要操作的次数是max(a(i)-mia,b(i)-mib),累加就是答案。
code:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxm=1e5+5;
int a[maxm];
int b[maxm];
int n;
signed main(){
int T;scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
}
int mia=a[1],mib=b[1];
for(int i=1;i<=n;i++){
mia=min(mia,a[i]);
mib=min(mib,b[i]);
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=max(a[i]-mia,b[i]-mib);
}
printf("%lld\n",ans);
}
return 0;
}