我
复杂度保底 o(nTlogn2)
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T[2010],b[2010];
vector<int>g[2010],f[2010];
signed main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(g,0,sizeof(g));
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
cin>>T[i];
for(int i=1;i<=n;i++)
cin>>b[i];
if(n==1)
{
if(b[1]%T[1]==0)
cout<<"Yes\n";
else
cout<<"No\n";
continue;
}
int flag=1;
for(int i=1;i<=n;i++)
{
int k=0;
int flag1=0,flag2=0;
while(k*T[i]<=b[i])
{
if((b[i]-k*T[i])%(T[i]+T[n-i+1])==0)
{
g[i].push_back(k);
f[i].push_back((b[i]-k*T[i])/(T[i]+T[n-i+1]));
}
k++;
}
if(i!=1)
{
for(int j=0;j<g[1].size();j++)
{
for(int l=0;l<g[i].size();l++)
{
int v=g[i][l];
int u=g[1][j];
int v1=f[i][l];
int u1=f[1][j];
if(u==v&&v1==u1)
flag1=1;
}
}
if(flag1==0)
flag=0;
}
}
if(flag==1)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}