zoukankan      html  css  js  c++  java
  • bzoj1407

    扩展欧几里得

    我们发现其实就是两个野人在自己的寿命内不会相遇,或者永远不会相遇,那么我们枚举m,然后枚举两个人,看是否符合条件

    扩展欧几里得ax+by=c,这里c不能取模,a能取模,具体不想了

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 20;
    int n;
    int c[N], p[N], l[N];
    void ex_gcd(int a, int b, int &x, int &y)
    {
        if(b == 0)
        {
            x = 1;
            y = 0;
        }
        else
        {
            ex_gcd(b, a % b, y, x);
            y -= x * (a / b);
        }
    }
    int main()
    {
        scanf("%d", &n);
        int low = 0;
        for(int i = 1; i <= n; ++i) 
        {
            scanf("%d%d%d", &c[i], &p[i], &l[i]);
            low = max(low, c[i]);
        }
        low = max(low, n);
        for(int m = low; m <= 1000000; ++m)
        {
    //        printf("m=%d
    ", m);
            bool flag = true;
            for(int i = 1; i <= n; ++i)
            {
                for(int j = i + 1; j <= n; ++j)
                {
                    int a, b, delta_v = ((p[i] - p[j]) % m + m) % m , delta_d = c[j] - c[i];
                    if(delta_v < 0) 
                    {
                        delta_v *= -1;
                        delta_d *= -1;
                    }
    //                delta_d = (delta_d % m + m) % m;
                    int t = __gcd(delta_v, m), tmp = m / t;
                    if(delta_d % t != 0) continue;
                    ex_gcd(delta_v, m, a, b);
                    a *= delta_d / t;
                    a = (a % tmp + tmp) % tmp;
                    if(a <= min(l[i], l[j]))
                    {
                        flag = false;
                        break;
                    }
                }
                if(!flag) break;
            }
            if(flag) 
            {
                printf("%d
    ", m);
                return 0;
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    梦心日记本V2.0终于要完工了
    上班半年大总结
    真有趣
    搞定设计模式1之策略模式
    利用GDI+制作背景颜色淡入淡出效果的按钮
    浏览器之争
    学习自定义控件
    搞定设计模式2之代理模式
    (转)学习asp.net比较完整的流程
    搞定设计模式3之中介者模式
  • 原文地址:https://www.cnblogs.com/19992147orz/p/7338534.html
Copyright © 2011-2022 走看看