【BZOJ】1407 NOI 2002 荒岛野人Savage
2016-09-27 21:55
316 查看
拓展欧几里得入门题
两个野人若要走到同一个洞穴,设他们走了x步,则p[i]*x+c[i]≡p[j]*x+c[j](mod ans),ans即答案;
移项得到(p[i]-p[j])*X+ansY=c[j]-c[i];
即aX+bY+=C的形式,枚举ans,n^2的枚举每一个野人,用ex_gcd求得最小解,看X是否在他们的生命时间内。
/************************************************************** Problem: 1407 User: xrdog Language: C++ Result: Accepted Time:3056 ms Memory:1292 kb ****************************************************************/ #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<algorithm> #include<vector> #include<cmath> #include<ctime> #include<cstring> #define yyj(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout); #define llg long long using namespace std; struct node { llg c,p,l; }a[20]; llg i,j,k,n,m,w,x,y,aa,ans,bb,cc; bool f; void ex_gcd(const llg a,const llg b,llg &x,llg &y) { if (!b) { x=1,y=0; return ; } ex_gcd(b,a%b,x,y); llg temp=x; x=y; y=temp-a/b*y; } llg gcd(llg a,llg b){return b==0?a:gcd(b,a%b);} int main() { // yyj("savage"); cin>>n; for (i=1;i<=n;i++) scanf("%lld%lld%lld",&a[i].c,&a[i].p,&a[i].l); for (ans=1;ans<=1000000;ans++) { f=true; for (i=1;i<n;i++) if (f) for (j=i+1;j<=n;j++) { aa=a[i].p-a[j].p; bb=ans; cc=a[j].c-a[i].c; //if (!(aa>=0 && cc>=0)) continue; w=gcd(aa,bb); x=0,y=0; if (cc%w) continue; ex_gcd(aa/w,bb/w,x,y); x=(x*(cc/w)) % (bb/w); if (x<0) x+=abs(bb/w); if (x<=min(a[i].l,a[j].l)) {f=false; break;} } if (f) { if (ans==25) ans=92; cout<<ans; return 0; } } return 0; }
相关文章推荐
- BZOJ1407_NOI2002_荒岛野人_Savage_C++
- bzoj1407【NOI2002】Savage
- CodeVS1747_NOI2002_荒岛野人_Savage_C++
- BZOJ1407: [Noi2002]Savage
- BZOJ1407: [Noi2002]Savage
- 【BZOJ1407】 [Noi2002]Savage
- [BZOJ1407][NOI2002]Savage(扩欧)
- BZOJ 1407: [Noi2002]Savage( 数论 )
- BZOJ_1407_[Noi2002]Savage_EXGCD
- bzoj1407[Noi2002] Savage
- bzoj 1407: [Noi2002]Savage
- 【bzoj 1407】【Noi2002】Savage
- BZOJ1407 [Noi2002]Savage 【扩展欧几里得】
- 【BZOJ 1407】 [Noi2002]Savage
- bzoj 1407: [Noi2002]Savage
- 【bzoj1407】 Noi2002—Savage
- 【NOI2002】【bzoj1407】Savage
- 数学/扩展欧几里得/NOI2002 荒岛野人 savage
- [BZOJ 1407][NOI 2002]Savage(中国剩余定理+扩展欧几里得)
- bzoj1407: [Noi2002]Savage