贪心题,因为p元素是正整数,不能为0
所以,对于a[i]<=b[i],p[i]=1
对于a[i]==b[i]的情况,我们p[i]=1,就不需要管了,它并不能给suma-sumb带来负值
但是对于a[i] < b[i],就会了,我们用sum来计算a[i] < b[i]的数量
然后将其平摊到a[i] > b[i]的情况下,就能够保证suma=sumb,然后只需要在最后结果上+1即可
注意,a[i],b[i]不为1就是0
-1的情况就是没有a[i]>b[i]的情况,不然一定可以通过p来逆转
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[103];
int main(){
int n;
scanf("%d",&n);
int sum=0;
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
int t=0;
for(int i=1;i<=n;++i){
int b;
scanf("%d",&b);
if(b<a[i])t++;
if(b>a[i])sum+=b;
}
if(!t)printf("-1\n");
else printf("%d\n",sum/t+1);
return 0;
}