题意:
有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;
}