BZOJ1407 [Noi2002]Savage
Description

Input
Output
仅包含一个数M,即最少可能的山洞数。输入数据保证有解,且M不大于10^6。
Sample Input
1 3 4
2 7 3
3 2 1
Sample Output
//该样例对应于题目描述中的例子。
HINT
Source
//It is made by jump~
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <ctime>
#include <vector>
#include <queue>
#include <map>
#include <set>
using namespace std;
typedef long long LL;
const int inf = (<<);
const int MAXN = +;
int n,minl,a,b,c;
int ini[MAXN],p[MAXN],L[MAXN];
//c[i]+p[i]*x=c[j]+p[j]*x-now*y ==> (c[i]-c[j])*x+now*y=c[j]-c[i] inline int getint()
{
int w=,q=; char c=getchar();
while((c<'' || c>'') && c!='-') c=getchar(); if(c=='-') q=,c=getchar();
while (c>='' && c<='') w=w*+c-'', c=getchar(); return q ? -w : w;
} inline int gcd(int x,int y){
if(y==) return x;
return gcd(y,x%y);
} inline void extend_gcd(int a,int b,int &x,int &y){
if(b==) {
x=;
y=;
return ;
}
extend_gcd(b,a%b,x,y);
int lin=x; x=y;
y=lin-(a/b)*y;
} inline void check(int now){//两两检查合法性
int gong,x,y;
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++) {
a=(p[i]-p[j]); b=now; c=(ini[j]-ini[i]); gong=gcd(a,b);
if(c%gong!=) continue; //无解
a=a/gong; b=b/gong; c=c/gong;
extend_gcd(a,b,x,y);
if(b<) b=-b;
x=x*c; x%=b; x+=b; x+=b; x%=b;
if(x<=L[i] && x<=L[j]) return ;
}
printf("%d",now);
exit();
} inline void work(){
n=getint(); for(int i=;i<=n;i++) ini[i]=getint(),p[i]=getint(),L[i]=getint();
for(int i=;i<=n;i++) minl=max(minl,ini[i]);//至少是ini[i]的最大值
for(;;minl++) check(minl);
} int main()
{
work();
return ;
}
BZOJ1407 [Noi2002]Savage的更多相关文章
- BZOJ1407 NOI2002 Savage 【Exgcd】
BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...
- 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 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 ...
- BZOJ 1407: [Noi2002]Savage( 数论 )
枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans ...
- [Noi2002]Savage
[Noi2002]Savage 数学题. 题解回去写(有个坑点) flag++ #include <cstdio> int n,m,c[25],p[29],l[29]; int exgcd ...
- [Noi2002]Savage 题解
[Noi2002]Savage 时间限制: 5 Sec 内存限制: 64 MB 题目描述 输入 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci ...
随机推荐
- BZOJ 2440 【中山市选2011】 完全平方数
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...
- POJ 3714 Raid
Description After successive failures in the battles against the Union, the Empire retreated to its ...
- mysql查看数据库和表的占用空间大小
mysql查看数据库和表的占用空间大小 第一部分-任务 将线上db,导出后,导入到office db 一. 两种方案: 1,将数据直接从online-->office,通过mysqldump ...
- C++ 中dynamic_cast<>的使用方法小结 -判断类型-rtti
将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理 即会作一定的判断. 对指针进行dynamic ...
- Linux 信号详解二(信号分类,信号处理,kill)
信号分类 信号分为可靠信号和不可靠信号 不可靠信号的缺点 ①:处理完信号,需要重新再注册信号:②信号可能丢失. Linux已经对缺点①做了优化,现在的不可靠问题主要指的是信号可能丢失 信号还可以分为实 ...
- QT TCP文件上传服务器
利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...
- jQuery使用.on()无法绑定hover
发现好像没有hover这个事件,jQuery的hover事件是一个封装,hover算不得一个事件.他只是将mouseover和mouseout合并了用mouseover和mouseout两个配合效果好 ...
- css的active事件在手机端不生效的解决方法
对一名前端来说,改页面的过程总是痛苦的,产品经理说要加个点击样式,于是加active的class,本来以为这样就OK了,没想到电脑上ok,本地测也是ok的,tomcat上一跑就没效果了.我甚至把! i ...
- [CF#290 Div.1 C]Fox And Dinner(最大流)
题目:http://codeforces.com/contest/512/problem/C 题目大意:给你若干个数,让你分成k组,每组围成一个圆,使得相邻两个数和均为素数,且每组人数应>=3个 ...
- MVC的理解
一: MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain ...