社区讨论
求助!样例都过不了
P2421[NOI2002] 荒岛野人参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi6yq2cu
- 此快照首次捕获于
- 2025/11/20 13:00 4 个月前
- 此快照最后确认于
- 2025/11/20 13:00 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
struct sd{
int c,p,l;
}person[20];
int n,limit;
void exgcd(int a,int b,int &d,int &x,int &y)
{
if(b==0)
{d=a;x=1;y=0;}
else{
exgcd(b,a%b,d,x,y);
int t;
t=x;x=y;y=t-(a/b)*y;
}
}
int main()
{
int a,b,d,qm,qn,kx,ky;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d%d%d",&person[i].c,&person[i].p,&person[i].l);
limit=max(person[i].c,limit);
}
for(int i=limit;i<=1000000;++i)
{
bool flag=true;
for(int j=1;j<=n;++j)
{
for(int k=j+1;k<=n;++k)
{
int x,y;
a=person[j].p,b=person[k].p;
qm=person[j].c,qn=person[k].c;
exgcd(((a-b)%i+i)%i,i,d,x,y);
if((qm-qn)%d!=0) continue;
kx=(qm-qn)/d*(x);
kx=(kx%(i/d)+(i/d))%(i/d);
if(kx<=min(person[j].l,person[k].l))
{
flag=false;
break;
}
continue;
}
if(!flag) break;
}
if(!flag) continue;
printf("%d",i);
return 0;
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...