BZOJ1407 NOI2002 Savage


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

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


首先看到了M<=1e6,然后就可以暴力枚举M的值

然后确定了M的值之后,我们对于两个野人i和j可以列出

(Ci+x∗pi)−(Cj+x∗pj)=y∗M" role="presentation">(Ci+x∗pi)−(Cj+x∗pj)=y∗M(Ci+x∗pi)−(Cj+x∗pj)=y∗M

当x≤min(li,lj)" role="presentation">x≤min(li,lj)x≤min(li,lj)的时候就不成立(会相遇)

求出x的最小整数解判断一下就行了


#include<bits/stdc++.h>
using namespace std;
#define N 20
#define M 1000000
int n;
int c[N],p[N],l[N];
void exgcd(int a,int b,int &x,int &y){
if(!b)x=1,y=0;
else{
exgcd(b,a%b,y,x);
y-=(a/b)*x;
}
}
int gcd(int a,int b){
if(!b)return a;
return gcd(b,a%b);
}
bool judge(int i,int j,int s){
int anow=p[i]-p[j],bnow=s,cnow=c[j]-c[i];
int x,y,d=gcd(anow,bnow);
if(cnow%d)return 1;
exgcd(anow,bnow,x,y);
int w=abs(s/d);
x=((x*cnow/d)%w+w)%w;
if(x<=l[i]&&x<=l[j])return 0;
return 1;
}
bool check(int s){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(!judge(i,j,s))return 0;
return 1;
}
int main(){
int down=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d%d",&c[i],&p[i],&l[i]),down=max(down,c[i]);
for(int i=down;i<=M;i++)
if(check(i)){printf("%d",i);return 0;}
return 0;
}

BZOJ1407 NOI2002 Savage 【Exgcd】的更多相关文章

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

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

  2. 【exgcd】卡片

    卡片 题目描述 你有一叠标号为1到n的卡片.你有一种操作,可以重排列这些卡片,操作如下:1.将卡片分为前半部分和后半部分.2.依次从后半部分,前半部分中各取一张卡片,放到新的序列中.例如,对卡片序列( ...

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

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

  4. BZOJ1407: [Noi2002]Savage exgcd

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

  5. bzoj 1407: [Noi2002]Savage【扩展欧几里得+中国剩余定理】

    首先答案不会很大,所以枚举答案m,于是把问题转为了判定: 关于如何判定: 首先题目中虽然没说但是数据是按照初始洞穴编号排的序,所以并不用自己重新再排 假设当前答案为m,相遇时间为x,野人i和j,那么可 ...

  6. Codeforces1106F 【BSGS】【矩阵快速幂】【exgcd】

    首先矩阵快速幂可以算出来第k项的指数,然后可以利用原根的性质,用bsgs和exgcd把答案解出来 #include<bits/stdc++.h> using namespace std; ...

  7. 洛谷 P4774 / loj 2721 [NOI2018] 屠龙勇士 题解【同余】【exgcd】【CRT】

    推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n​\) 顺序杀掉 \(n​\ ...

  8. 【9.2校内测试】【开学祭】【exgcd】【树规(背包】【模拟】

    比较裸的$exgcd$的应用? $exgcd$可以算出在$x$和$y$分别是最小正整数时的解.注意在这里因为有$a(x+\frac{b}{d})+b(y-\frac{a}{d})=c$,$d=gcd( ...

  9. bzoj 1477: 青蛙的约会【exgcd】

    列出式子是\( mx+s1\equiv nx+s2(mod L) (m-n)x+Ly=s2-s1 \),注意如果n-m<0的话,就把ac都乘-1变成正数,然后exgcd求解,最后注意x为负的话要 ...

随机推荐

  1. java高级特性(3)--方法可变参数

    1.特征:... 2.方法可变参数,必须是方法参数列表的最后一位. 3.一个方法只能有一个方法可变参数. 4.方法可变参数本质是一个数组. 5.调用时按照方法可变参数赋值,多余的实参被封装成一个数组, ...

  2. C# ContentType: "application/json" 请求方式传json参数问题

    处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...

  3. 解决silk-v3-decoder-master转换wav时,百度语音解析问题

    $cur_dir/silk/decoder >& if [ ! -f "$1.pcm" ]; then /usr/local/ffmpeg/bin/ffmpeg -y ...

  4. 解决Tomcat加载时报APR错的问题

    部署Tomcat的时候出现了如下错误, INFO: The APR based Apache Tomcat Native library which allows optimal performanc ...

  5. javascript 关键词 new都做了写什么

    翻译自stackoverflow:http://stackoverflow.com/questions/1646698/what-is-the-new-keyword-in-javascript ne ...

  6. 设计模式--代理模式C++实现

    代理模式C++实现 1定义 为其他对象提供一种代理以控制对这个对象的访问 2类图 角色定义: Subject抽象主体角色,抽象类或者接口,是一个普通的业务类型定义 RealSubject具体主体角色, ...

  7. 1-19-1 RHEL6启动原理和故障排除

    大纲: 一.RHEL6系统启动原理 BIOS--->mbr--->bootloader--->内核--->init--->/etc/rc.d/rc.sysinit---& ...

  8. Spring Boot配置ContextPath【从零开始学Spring Boot】

    Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/ 访问的话,那么需要在Application ...

  9. Mac下新安装的MySQL无法登陆root用户解决方法

      一 设置MySQL命令行搜索路径 0.苹果->系统偏好设置->最下边点mysql 在弹出页面中 启动mysql服务 1.打开终端,输入: sudo vi ~/.bash_profile ...

  10. java程序设计基础篇 复习笔记 第五单元

    1. method header: modifier, return value type, method signature(method name, parameter) method body ...