题目链接

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
using namespace std;
#define int long long
const int N = 5010;
int sa[N],sb[N],f[N];
void solve()
{
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>sa[i],sa[i]=sa[i-1]+sa[i];
for(int i=1;i<=n;i++)cin>>sb[i],sb[i]=sb[i-1]+sb[i];
memset(f,-0x3f,sizeof f);
f[0]=0;
for(int i=1;i<=n;i++)
for(int j=i-1;j>=0;j--)
if(sa[i]-sa[j]>=sb[i]-sb[j])f[i]=max(f[i],f[j]+1);
f[n]=f[n]<0?-1:f[n];
cout<<f[n]<<'\n';
}
signed main()
{
int T;cin>>T;
while(T--)solve();
}