当前位置: 代码迷 >> 综合 >> CF1399B Gifts Fixing——蒟蒻题解
  详细解决方案

CF1399B Gifts Fixing——蒟蒻题解

热度:43   发布时间:2024-02-11 04:04:26.0

惯例,先粘个生草翻译
在这里插入图片描述

简单

的一道题
两个拥有同样下标的数组
写个小贪心
a数组代表糖果
b数组代表橘子
内部循环遍历一次
把多的糖果(减去最小值求出)全吃掉,同时吃相同数量的橘子(保证贪心)然后判断如果吃多了就吐出来
再来个if专门处理没吃完的橘子就行了
没有易错点
但因为两个独立的数组,所以变量名特别注意,(我改了两次才对
呔,看代码

#include<bits/stdc++.h>
using namespace std;
#define int long long 
int a[55],b[55],numa;
int mina=1000000001;
int minb=1000000001;
long long ans;
signed main(){int t;cin>>t;int n;for(int i=1;i<=t;i++){mina=1000000001;minb=1000000001;memset(a,0,sizeof(a));memset(b,0,sizeof(b));ans=0;cin>>n;for(int j=1;j<=n;j++){cin>>a[j];mina=min(a[j],mina);	}// cout<<"zuixiaozhi"<<mina<<endl;for(int j=1;j<=n;j++){cin>>b[j];minb=min(b[j],minb);}// cout<<"zuixiaozhi"<<minb<<endl;for(int j=1;j<=n;j++){if(a[j]>mina){int cha=a[j]-mina;ans+=cha;a[j]=mina;b[j]-=cha;//顺便给橘子吃了 if(b[j]<minb)b[j]=minb;//吐出来 }if(b[j]>minb){int cha=b[j]-minb;ans+=cha;b[j]=minb;//糖吃过了,只用吃剩下的橘子 }}cout<<ans<<endl;}
}