xdm,大紫大红,emo了
查看原帖
xdm,大紫大红,emo了
767588
_fwTransform_楼主2024/8/11 07:41

rt,寄录,看题解了,式子推的都一样,但是总是过不了

atk.clear();minn=0;
int n=read(),m=read();
for(int i=1;i<=n;++i)ai[i]=read();
for(int i=1;i<=n;++i)pi[i]=read();
for(int i=1;i<=n;++i)bonus[i]=read();
for(int i=1;i<=m;++i)atk.insert(read());
//cerr<<atk.size()<<endl;
for(int i=1;i<=n;++i)
{
	itor it=atk.begin();
	if(*it<ai[i])it=--atk.upper_bound(ai[i]);
//	if(it==atk.end())cerr<<"gun"<<endl;
//	cerr<<*it<<endl;		
	u[i]=*it;minn=max(minn,(ai[i]-1)/u[i]+1);
	ai[i]%=pi[i];
	atk.erase(it);atk.insert(bonus[i]);
}
lll finalm=pi[1];lll ans=0;
lll k,t;lll gcd=exgcd(k,ans,pi[1],u[1]);
if(ai[1]%gcd)
{
	cout<<-1<<endl;
//	deb;
	continue;
}
ans=ai[1]/gcd*ans%(pi[1]/gcd);
for(int i=2;i<=n;++i)
{
//	it=atk.begin();
//	if(*it<ai[i])it=--atk.upper_bound(ai[i]);
//	if(it==atk.end())cerr<<"gun"<<ai[i]<<endl;
//	cerr<<*it<<' '<<modinv(*it,pi[i])<<endl;
//	ai[i]=ai[i]*modinv(*it,pi[i])%pi[i];
	lll res=((ai[i]-u[i]*ans)%pi[i]+pi[i])%pi[i];
	gcd=exgcd(k,t,pi[i],finalm*u[i]);
	if(res%gcd)
	{
		cerr<<"end at "<<i<<endl;
		ans=-1;break;
	}
	t=res/gcd*t%(pi[i]/gcd);
	ans+=t*finalm;
	finalm=finalm/_gcd(finalm,pi[i])*pi[i];
	ans=(ans%finalm+finalm)%finalm;
}
if(ans<0)cout<<-1;
else
{
	if(ans<minn)ans+=((minn-ans-1)/finalm+1)*finalm;
	write(ans);
}
putchar(endl);

注释中能看出来精神状态良好

2024/8/11 07:41
加载中...