Description

Input

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

Output

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

Sample Input

3
1 3 4
2 7 3
3 2 1

Sample Output

6

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

考虑两个野人i、j的情况:设他们在x年后相遇,则得到该式: P[i]*x+C[i]=P[j]*x+C[j](mod M)

化为同余方程: (P[i]-P[j])*x+k*M=C[j]-C[i]

按照题目要求,我们需要找到一个M,使得上式无解或者x>min(C[i],C[j])  (在野人有生之年没有相遇)

问题扩展到所有野人,由于数据范围很小,可以直接枚举M,判断是否所有野人之间都满足要求。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int mxn=;
int c[mxn],le[mxn],p[mxn];
int n;
int m;
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int exgcd(int a,int b,int &x,int &y){
if(b==){
x=;
y=;
return a;
}
exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
}
bool judge(int m){ int i,j;
int t,x,y;
for(i=;i<n;i++){
for(j=i+;j<=n;j++){
int a=p[i]-p[j];
int b=m;
int c1=c[j]-c[i];
t=gcd(a,b); if(c1%t==){
a/=t;b/=t;c1/=t;
exgcd(a,b,x,y);
b=abs(b);
x=((c1*x)%b+b)%b;
if(!x)x+=b;
if(x<=min(le[i],le[j]))return ;
}
}
}
return ;
}
int main(){
scanf("%d",&n);
int i,j;
m=;
for(i=;i<=n;i++){
scanf("%d%d%d",&c[i],&p[i],&le[i]);
if(c[i]>m)m=c[i];
}
for(i=m;i;i++){
if(judge(i)){
printf("%d\n",i);
break;
}
}
return ;
}

Bzoj1407 Savage的更多相关文章

  1. BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)

    zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...

  2. BZOJ1407 NOI2002 Savage 【Exgcd】

    BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...

  3. 【bzoj1407】 Noi2002—Savage

    http://www.lydsy.com/JudgeOnline/problem.php?id=1407 (题目链接) 题意 有n个原始人他们一开始分别住在第c[i]个山洞中,每过一年他们都会迁往第( ...

  4. BZOJ1407 [Noi2002]Savage 【扩展欧几里得】

    题目链接 BZOJ1407 题解 枚举\(m\)用扩欧判即可 #include<algorithm> #include<iostream> #include<cstrin ...

  5. [BZOJ1407][NOI2002]Savage(扩展欧几里德)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1407 分析: m,n范围都不大,所以可以考虑枚举 先枚举m,然后判定某个m行不行 某个 ...

  6. BZOJ1407 [Noi2002]Savage

    Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...

  7. BZOJ1407: [Noi2002]Savage exgcd

    Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...

  8. 【数学 exgcd】bzoj1407: [Noi2002]Savage

    exgcd解不定方程时候$abs()$不能乱加 Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...

  9. bzoj1407 [Noi2002]Savage——扩展欧几里得

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 看到一定有解,而且小于10^6,所以可以枚举: 判断一个解是否可行,就两两判断野人 i ...

随机推荐

  1. web worker,SSE,WebSocket,AJAX 与后端交互的方式

    一 web worker web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能.您可以继续做任何愿意做的事情:点击.选取内容等等,而此时 web worker ...

  2. 小白对异步IO的理解

    前言 看到越来越多的大佬都在使用python的异步IO,协程等概念来实现高效的IO处理过程,可是我对这些概念还不太懂,就学习了一下. 因为是初学者,在理解上有很多不到位的地方,如果有错误,还希望能够有 ...

  3. 1014-32-首页13-cell的结构分析---导航栏中间title位置的按钮的尺寸设置---setFrame----

    #import "HWTitleButton.h" #define HWMargin 5 @implementation HWTitleButton - (id)initWithF ...

  4. 【异常】The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.

    异常错误:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone ...

  5. linux poll用法

    相对于select来说,poll 也是在指定时间内论询一定数量的文件描述符,来测试其中是否有就绪的,不过,poll 提供了一个易用的方法,来实现 i/o 复用. 声明如下: #include < ...

  6. perl语言入门总结-第5章-输入输出

    读取标准输入 chomp($line = <STDIN>); #去掉后面的换行 while (defined($line = <STDIN>)) { print "I ...

  7. python-8错误调试测试

    1-错误处理 import logging try: print('try.......') r = 10/0 except ValueError as e: print('result:', e) ...

  8. python-1基础总结

    输入  >>> name = input() 1--如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义,可以自己试 ...

  9. 大话卷积神经网络(CNN)

      这几年深度学习快速发展,在图像识别.语音识别.物体识别等各种场景上取得了巨大的成功,例如AlphaGo击败世界围棋冠军,iPhone X内置了人脸识别解锁功能等等,很多AI产品在世界上引起了很大的 ...

  10. 在MAC下使用Robotframework+Selenium2【第二枪】如何处理Table点击指定记录

    1.通过关键字Get Matching Xpath Count获取table中的记录 2.遍历Table所有记录 3.判断记录是否符合条件,做点击操作