Bzoj1407 Savage
Description

Input
Output
Sample Input
1 3 4
2 7 3
3 2 1
Sample Output
该样例对应于题目描述中的例子。
考虑两个野人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的更多相关文章
- BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)
zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...
- BZOJ1407 NOI2002 Savage 【Exgcd】
BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...
- 【bzoj1407】 Noi2002—Savage
http://www.lydsy.com/JudgeOnline/problem.php?id=1407 (题目链接) 题意 有n个原始人他们一开始分别住在第c[i]个山洞中,每过一年他们都会迁往第( ...
- BZOJ1407 [Noi2002]Savage 【扩展欧几里得】
题目链接 BZOJ1407 题解 枚举\(m\)用扩欧判即可 #include<algorithm> #include<iostream> #include<cstrin ...
- [BZOJ1407][NOI2002]Savage(扩展欧几里德)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1407 分析: m,n范围都不大,所以可以考虑枚举 先枚举m,然后判定某个m行不行 某个 ...
- BZOJ1407 [Noi2002]Savage
Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...
- BZOJ1407: [Noi2002]Savage exgcd
Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...
- 【数学 exgcd】bzoj1407: [Noi2002]Savage
exgcd解不定方程时候$abs()$不能乱加 Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...
- bzoj1407 [Noi2002]Savage——扩展欧几里得
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 看到一定有解,而且小于10^6,所以可以枚举: 判断一个解是否可行,就两两判断野人 i ...
随机推荐
- yii2 url 美化参数
所谓的url参数美化就是将冗长的字符串 进行正则替换 yii2 框架的url参数美化完成需要完成两个阶段 第一个阶段分apache和nginx 两种的配置 apache :1.1 必须开启rewrit ...
- MySQL的备份
MySQL的备份 开启MySQL的log_bin 执行查看mysql的log_bin状态 > show variables like 'log_bin%'; +----------------- ...
- python_字符串_常用处理
1. 输出原序列的反向互补序列 in1 = open("brca1.fasta", "r") out1 = open("re_brca1.fasta& ...
- Uva12230Crossing Rivers 数学
Uva12230Crossing Rivers 问题: You live in a village but work in another village. You decided to follow ...
- 笔记-python-statement-with
笔记-python-statement-with 1. with语句 1.1. 基础使用案例 在开发时,经常使用with语句来打开文件: with open(‘a.txt’,’a+’, ...
- 基于原版Hadoop的YDB部署(转)
YDB依赖环境准备 一.硬件环境 硬件如何搭配,能做到比较高的性价比,不存在短板.合理的硬件搭配,对系统的稳定性也很关键. 1.CPU不是核数越高越好,性价比才是关键. 经常遇到很多的企业级客户,他们 ...
- kettle入门(三) 之kettle连接hadoop&hdfs图文详解(转)
1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情 ...
- Python数据类型三
一.帮助 如果想知道一个对象(object)更多的信息,那么可以调用help(object)!另外还有一些有用的方法,dir(object)会显示该对象的大部分相关属性名,还有object._ doc ...
- webstorm git提交不成功的
git pull git pull origin master git pull origin master --allow-unrelated-histories
- Ubuntu设置root密码[repost]
From: http://hi.baidu.com/busybox/item/283e7d31433db7179cc65ef3 安装完Ubuntu后在终端使用命令:su -然后输入密码,总是不正确.原 ...