/*
数据中段 想要的 3 3 1
已拥有的 1 2 5
1和5 是最高级 3和2 是第二级 3和1 是最低级
根据提示信息 高级的能变成低级的 已拥有的5个高级可以变成5个中级或5个低级 这里就是 5个高级变成1个高级 1个中级 3个低级 从而满足要求;
解决这道题目 首先要比较最高级的大小 如果拥有的大于想要的 就把高级的差值交给下一级 反之 不满足 输出 No 以此类推解决。
*/
#include <iostream> using namespace std; int main() { int t,i; cin>>t; while(t--) { int n,a[101],b[101]; long long c[101];//不这样内存不够 int count=0,ret=1; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } for(i=0;i<n;i++) { cin>>b[i]; } for(i=0;i<n;i++) { c[i]=b[i]-a[i]; } for(i=n-1;i>=0;i--) { if(c[i]<0) { ret=0; break; } if(c[i]>0) { c[i-1]+=c[i]; } } if(ret==0) { cout<<"No"<<endl; } else { cout<<"Yes"<<endl; } } return 0; }