社区讨论
TLE 90pts 求调
P2421[NOI2002] 荒岛野人参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo7u8r5m
- 此快照首次捕获于
- 2023/10/27 07:51 2 年前
- 此快照最后确认于
- 2023/10/27 07:51 2 年前
T了#5(寿命全是1000000)的点
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,c[20],p[20],l[20];
int rr,ll,lm;
bool op;
int exgcd(int a,int b,int &x,int &y){
if(!b){
x=1,y=0;
return a;
}
int gcd=exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
return gcd;
}
bool opp(int x,int i,int j){
if(x<=min(l[i],l[j])){
op=0;
return 0;
}
else{
op=1;
return 1;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>c[i]>>p[i]>>l[i];
m=max(m,c[i]);
lm=max(lm,l[i]);
}
if(n==1){
cout<<n;
return 0;
}
while(1){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) continue;
int a=p[i]-p[j],b=m,cc=c[j]-c[i];
int x,y;
int gcd=exgcd(a,b,x,y);
if(cc%gcd!=0) continue;
int ans=(x*cc/gcd)%(b/gcd);
if(ans<0) ans+=abs(b/gcd);
if(!opp(ans,i,j)) break;
}
if(!op) break;
}
if(op){
cout<<m;
return 0;
}
m++;
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...