当前位置: 代码迷 >> 综合 >> Codeforces1399 B. Gifts Fixing(思维)
  详细解决方案

Codeforces1399 B. Gifts Fixing(思维)

热度:81   发布时间:2024-02-07 18:36:12.0

题意:

有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;
}