zoukankan      html  css  js  c++  java
  • bzoj 1407 [Noi2002]Savage

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1407

    因为答案有很小的限制,所以可以枚举。(听说不能二分?)

    T*p[ i ] + c[ i ] = T*p[ j ] + c[ j ](mod m)

    <==>T*(p[ i ] - p[ j ]) + k * m = c[ j ] - c[ i ]

    然后需要打一个正确的板子。

    放一点笔记:

    exgcd有解,仅当得数是gcd的倍数。这样可以求出特解后同乘一个数得到解。
    ax+by=c的通解:ax1+by1=c;ax2+by2=c;  ->  a(x1-x2)+b(y1-y2)=0;  ->  a*del(x)+b*del(y)=0
            把a和b都除以它们的gcd,得a0*del(x)+b0*del(y)=0;
            因为互质,所以最小的del(x)=-b0 , del(y)=a0。

    特别奇怪的是如果不判 if (b<0) b = -b 就会WA。可是b什么时候会变成负数呢?

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int N=20,M=1e6;
    int n,m,c[N],p[N],l[N],x,y;
    bool flag;
    int gcd(int a,int b){return b?gcd(b,a%b):a;}
    void exgcd(int a,int b)
    {
        if(!b){x=1;y=0;return;}
        exgcd(b,a%b);
        int tx=x;
        x=y;y=tx-a/b*y;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d%d%d",&c[i],&p[i],&l[i]),m=max(m,c[i]);//
        for(;m<=M;m++)
        {
            flag=0;
            for(int i=1;i<=n;i++)
            {
                for(int j=i+1;j<=n;j++)
                {
                    int a=p[i]-p[j],b=m,w=c[j]-c[i],g=gcd(a,b);
                    if(w%g)continue;
                    a/=g;b/=g;w/=g;//
                    if(b<0)b=-b;    //
                    exgcd(a,b);
                    x=(x*w%b+b)%b;//*w,解出来的东西对应得数是gcd,现在约了g,gcd=1,故同乘w 
                    if(x<=min(l[i],l[j])){flag=1;break;}
                }
                if(flag)break;
            }
            if(!flag)
            {
                printf("%d",m);return 0;
            }
        }
    }
  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/Narh/p/9251433.html
Copyright © 2011-2022 走看看