解析
二分
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define inf 1e18
const int mod=1e9+7;
const int N=3e5+5;
int n;
int a[N],b[N];
bool check(int mid){
int x,y;
for(int i=1;i<=n;i++){
int t1=a[i]-(mid*b[i]);
int t2=a[i]+(mid*b[i]);
if(i==1){
x=t1;
y=t2;
}
else{
if(x>t2||y<t1) return false;
x=max(x,t1);
y=min(y,t2);
}
}
return y>=x;
}
void solve(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for(int i=1;i<=n;i++){
scanf("%lld",&b[i]);
}
int l=0,r=1e9;
while(l<r){
int mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%lld\n",l);
}
signed main(){
int tt=1;
scanf("%lld",&tt);
while(tt--) solve();
return 0;
}