若两数组总和不等则无法实现后续操作;否则最少操作数为所有需增加位置的差值之和:。
void solve(){
int n;cin>>n;
vll a(n),b(n);
for(int i=0;i<n;++i)cin>>a[i];
for(int i=0;i<n;++i)cin>>b[i];
ll s1=0,s2=0;
for(int i=0;i<n;++i){
s1+=a[i];
s2+=b[i];
}
if(s1!=s2){
cout<<-1<<endl;
return;
}
ll ans=0;
for(int i=0;i<n;++i){
ll d=b[i]-a[i];
if(d>0)ans+=d;
}
cout<<ans<<endl;
}

京公网安备 11010502036488号