求助T3
  • 板块学术版
  • 楼主lonely_cyx
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/5 18:33
  • 上次更新2023/11/2 15:26:45
查看原帖
求助T3
276588
lonely_cyx楼主2023/10/5 18:33

我

复杂度保底 o(nTlogn2)o(nTlogn^2)

#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;
}
2023/10/5 18:33
加载中...