zoukankan      html  css  js  c++  java
  • BZOJ-1407: [Noi2002]Savage (扩展欧几里得)

    1407: [Noi2002]Savage

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 2276  Solved: 1019
    [Submit][Status][Discuss]

    Description

    Input

    第1行为一个整数N(1<=N<=15),即野人的数目。
    第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴数及寿命值。
    (1<=Ci,Pi<=100, 0<=Li<=10^6 )

    Output

    仅包含一个数M,即最少可能的山洞数。输入数据保证有解,且M不大于10^6。

    Sample Input

    3
    1 3 4
    2 7 3
    3 2 1

    Sample Output

    6
    //该样例对应于题目描述中的例子。

    HINT

     

    Source

    鸣谢刘汝佳先生授权使用

     这题挺水的qwq

    一开始是想着枚举任意两个人然后把可能的天数全部去掉,最后枚举m

    然鹅孬孬说不能这么写??? 不知什么情况qwq  于是就先枚举m,在判断m可不可行

    C1+P1*x=C2+P2*x+M*y      =>    (P1-P2)*x+(-M)*y=C2-C1 

    可惜laj忘了模线性方程怎么解了 _(:зゝ∠)_

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 const int MAX=25;
     4 int n,m,C[MAX],P[MAX],L[MAX];
     5 int exgcd(int a,int b,int &x,int &y){
     6     if (b==0) return x=1,y=0,a;
     7     int d=exgcd(b,a%b,x,y);
     8     int t=x; x=y,y=t-a/b*y;
     9     return d;
    10 }
    11 int main(){
    12     freopen ("gcd.in","r",stdin);freopen ("gcd.out","w",stdout);
    13     int i,j,a,b,c,d,e,f,x,y;
    14     scanf("%d",&n);
    15     for (i=1;i<=n;i++) scanf("%d%d%d",C+i,P+i,L+i),m=max(m,C[i]);
    16     for (;m<=1e6;m++){
    17         bool flag=true;
    18         for (i=1;i<=n;i++){
    19             for (j=i+1;j<=n;j++){
    20                 a=P[i]-P[j],b=m,c=C[j]-C[i];
    21                 d=exgcd(a,b,x,y);
    22                 if ((c%d)!=0) continue;
    23                 x=x*c/d,x=x%(m/d);
    24                 if (x<0) x+=abs(m/d);
    25                 if (x<=L[i] && x<=L[j]) {flag=false;goto away;}
    26             }
    27         }
    28         away:if (flag) return printf("%d",m),0;
    29     }
    30 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    团队现场编程实战(抽奖系统)
    Alpha 冲刺 (4/10)
    斗地主
    解方程
    货币系统
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/7742621.html
Copyright © 2011-2022 走看看