提交记录 5537


用户 题目 状态 得分 用时 内存 语言 代码长度
applese noi18d. 【NOI2018】屠龙勇士 Accepted 100 511.172 ms 11472 KB C++ 3.49 KB
提交时间 评测时间
2018-08-29 14:30:09 2020-08-01 00:19:04
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC target("avx")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool Finish_read;
template<class T>inline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;if(ch==EOF)return;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;Finish_read=1;}
template<class T>inline void print(T x){if(x/10!=0)print(x/10);putchar(x%10+'0');}
template<class T>inline void writeln(T x){if(x<0)putchar('-');x=abs(x);print(x);putchar('\n');}
template<class T>inline void write(T x){if(x<0)putchar('-');x=abs(x);print(x);}
/*================Header Template==============*/
const int maxn=100005;
multiset<ll>sword;
int T,n,m;
ll a[maxn],p[maxn],d[maxn],u[maxn];
vector<ll>aa,pp,uu,aaa,ppp,uuu; 
inline ll gcd(ll a,ll b) {
//	return __gcd(a,b);
	return b?gcd(b,a%b):a;
}
inline ll lcm(ll a,ll b) {
	if(!a||!b)
		return a|b;
//	cout<<gcd(a,b)<<" "<<a<<" "<<b<<endl;
	return a/gcd(a,b)*b;
}
inline void exgcd(ll a,ll b,ll &d,ll &x,ll &y) {
	if(!b)
		d=a,x=1,y=0;
	else {
		exgcd(b,a%b,d,y,x);
		y-=x*(a/b);
	}
}
inline ll inv(ll v,ll p) {
	ll d,x,y;
	exgcd(v,p,d,x,y);
	return d==1?(x+p)%p:-1;
}
inline ll Mul(ll a,ll b,ll p) {
	ll res=0;
	while(b) {
		if(b&1) {
			res=res+a;
			if(res>=p)
				res-=p;
		}
		a=a+a;
		if(a>=p)
			a-=p;
		b>>=1;
	}
	return res;
}
inline bool work(ll a1,ll p1,ll a2,ll p2,ll &a3,ll &p3) {
	ll g=gcd(p1,p2),c=a2-a1;
	if(c%g)
		return 0;
	c=(c%p2+p2)%p2,c/=g,p1/=g,p2/=g,c=Mul(c,inv(p1,p2),p2),p3=p1*p2*g,a3=((Mul(c,p1*g,p3)+a1)%p3+p3)%p3;
	return 1;
}
inline ll solve() {
	if(!n)
		return 0;
	ll a1=a[1],p1=p[1],a2,p2;
	for(int i=2;i<=n;++i) {
		ll a3,p3;
		a2=a[i],p2=p[i];
		if(!work(a1,p1,a2,p2,a3,p3))
			return -1;
		a1=a3,p1=p3;
	}
	return (a1%p1+p1)%p1;
}
int main() {
//	freopen("dragon.in","r",stdin);
//	freopen("dragon.out","w",stdout);
	read(T);
	while(T--) {
		aa.clear(),uu.clear(),pp.clear();
		aaa.clear(),uuu.clear(),ppp.clear();
		sword.clear();
		read(n),read(m);
		int flg=1;
		for(int i=1;i<=n;++i)
			read(a[i]);
		for(int i=1;i<=n;++i)
			read(p[i]),flg&=(p[i]==1);
		for(int i=1;i<=n;++i)
			read(d[i]);
		for(int i=1;i<=m;++i) {
			ll x;
			read(x),sword.insert(x);
		}
		bool noans=0;
		for(int i=1;i<=n;++i) {
			multiset<ll>::iterator it=sword.upper_bound(a[i]);
//			cout<<*it<<" "<<a[i]<<endl;
			if(it==sword.begin())
				u[i]=*it,sword.erase(it);
			else
				--it,u[i]=*it,sword.erase(it);
			if(!u[i]) {
				puts("-1");
				noans=1;
				break;
			}
			sword.insert(d[i]);
//			cout<<a[i]<<" "<<p[i]<<" "<<u[i]<<endl;
			ll g=gcd(p[i],u[i]);
			if(a[i]%g!=0) {
				puts("-1");
				noans=1;
				break;
			}
			a[i]/=g,u[i]/=g,p[i]/=g;
//			cout<<g<<" "<<a[i]<<" "<<p[i]<<" "<<u[i]<<endl;
			if(a[i]%p[i]==0)
				aa.push_back(a[i]),uu.push_back(u[i]),pp.push_back(p[i]);
			else
				aaa.push_back(a[i]),uuu.push_back(u[i]),ppp.push_back(p[i]);
//			cout<<a[i]<<" "<<u[i]<<" "<<p[i]<<endl;
		}
		if(noans)
			continue;
		if(flg) {
			ll mx=0;
			for(int i=1;i<=n;++i)
				mx=max(mx,a[i]/u[i]+(a[i]%u[i]!=0));
			printf("%lld\n",mx);
			continue;
		}
		n=aaa.size();
		for(int i=1;i<=n;++i)
			a[i]=aaa[i-1],p[i]=ppp[i-1],u[i]=uuu[i-1];
		for(int i=1;i<=n;++i) {
			ll v=inv(u[i],p[i]);
			a[i]=Mul(a[i],v,p[i]);
		}
		ll now=solve();
//		cout<<n<<" "<<now<<endl; 
		for(int i=0;i<(int)aa.size();++i) {
			ll l=lcm(uu[i],pp[i]);
			now=lcm(now,(aa[i]/l+(aa[i]%l!=0))*l/uu[i]);
//			cout<<l<<" "<<(aa[i]/l+(aa[i]%l!=0))*l/uu[i]<<endl;
		}
		printf("%lld\n",now);
	}
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #141.47 ms7 MB + 164 KBAcceptedScore: 5

Testcase #241.318 ms7 MB + 164 KBAcceptedScore: 5

Testcase #349.54 ms7 MB + 164 KBAcceptedScore: 5

Testcase #449.378 ms7 MB + 164 KBAcceptedScore: 5

Testcase #52.431 ms160 KBAcceptedScore: 5

Testcase #62.374 ms160 KBAcceptedScore: 5

Testcase #72.346 ms168 KBAcceptedScore: 5

Testcase #843.63 us52 KBAcceptedScore: 5

Testcase #942.75 us52 KBAcceptedScore: 5

Testcase #1041.12 us52 KBAcceptedScore: 5

Testcase #1140.8 us52 KBAcceptedScore: 5

Testcase #1240.41 us52 KBAcceptedScore: 5

Testcase #1341.3 us52 KBAcceptedScore: 5

Testcase #14263.668 ms11 MB + 208 KBAcceptedScore: 5

Testcase #15264.327 ms11 MB + 208 KBAcceptedScore: 5

Testcase #16510.024 ms11 MB + 208 KBAcceptedScore: 5

Testcase #17511.172 ms11 MB + 208 KBAcceptedScore: 5

Testcase #18505.622 ms11 MB + 208 KBAcceptedScore: 5

Testcase #19503.094 ms11 MB + 208 KBAcceptedScore: 5

Testcase #20503.317 ms11 MB + 208 KBAcceptedScore: 5


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-11 17:57:29 | Loaded in 2 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠