[Noi2002]Savage

时间限制: 5 Sec  内存限制: 64 MB

题目描述

输入

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

输出

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

样例输入

3
1 3 4
2 7 3
3 2 1

样例输出

6
//该样例对应于题目描述中的例子。
  这道题明眼人都能看得出来是扩展欧几里得,然而怎么搞就是一个问题了,如果对扩展欧几里得不是太熟可以先做一下 青蛙的约会 裸题,但要注意一下你的模板必须正确,否则像本博主这样的蒟蒻调半天才发现模板有错就崩了。(本博主扩展欧几里得的板子来自Q某犇,据Q某犇说他也是找了好久才发现神利.代目学长写正确模板,其余好多都是错误的)
  首先我们完全可以把青蛙那道题的主要代码都搬过来,由于这道题并不符合单调性,想二分的同学就扑街了,我也是其中之一。
  由于n很小m最大不过1000,000我们从小到大挨个枚举就好了,时间复杂度最坏就是n^2*log(max(c[i]))*1000000,反正时间有5秒,而且这只是最坏复杂度,所以貌似是可以的。然后就简单了,两个野人相遇的条件是他们能相遇且两人都存活,因此我们只要算出他们两个相遇的时间是否比他们中寿命最短的那个长就行了。
  
 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<string>
#include<cmath>
using namespace std;
int n,c[],p[],l[];
int exgcd(int a,int b,int &x,int &y){
if(b==)
{
x=;
y=;
return a;
}
int t=exgcd(b,a%b,x,y);
int o=x;
x=y;
y=o-a/b*y;
return t;
}
bool check2(int a,int b,int L){
int x,y;
int gcd=exgcd(p[a]-p[b],L,x,y);
if(((c[b]-c[a])%gcd)!=)
return ;
int aa=p[a]-p[b],bb=L;
aa/=gcd,bb/=gcd;
exgcd(aa,bb,x,y);
bb=abs(bb);
x=x*(c[b]-c[a])/gcd;
x%=bb;
if(x<) x+=bb;
if(x>min(l[a],l[b])) return ;
return ;
}
bool check1(int L){
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
if(!check2(i,j,L))
{
return ;
}
}
}
return ;
}
int main(){
// freopen("savage.in","r",stdin);
// freopen("savage.out","w",stdout);
scanf("%d",&n);
int st=;
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&c[i],&p[i],&l[i]);
st=max(st,c[i]);
}
int ans=;
for(int i=st;;i++)
{
if(check1(i))
{
ans=i;
break;
}
}
printf("%d\n",ans);
// while(1);
return ;
}
 

[Noi2002]Savage 题解的更多相关文章

  1. [Noi2002]Savage

    [Noi2002]Savage 数学题. 题解回去写(有个坑点) flag++ #include <cstdio> int n,m,c[25],p[29],l[29]; int exgcd ...

  2. BZOJ 1407: [Noi2002]Savage( 数论 )

    枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans ...

  3. BZOJ1407 NOI2002 Savage 【Exgcd】

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

  4. 【扩展欧几里得】Bzoj 1407: [Noi2002]Savage

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

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

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

  6. 【BZOJ 1407】[Noi2002]Savage ExGCD

    我bitset+二分未遂后就来用ExGCD了,然而这道题的时间复杂度还真是玄学...... 我们枚举m然后对每一对用ExGCD判解,我们只要满足在最小的一方死亡之前无解就可以了,对于怎么用,就是ax+ ...

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

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

  8. 【bzoj1407】 Noi2002—Savage

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

  9. BZOJ1407 [Noi2002]Savage

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

随机推荐

  1. SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)

    原文:SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容 ...

  2. 活锁(livelock) 专题

    活锁(livelock) 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败. 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于 ...

  3. mysql三种修改密码的方式

    [root@MySQL ~]# mysqladmin -uroot -proot -S /data/3307/mysql.sock password '123'; 其中-p是现在的密码,passwor ...

  4. javascript学习路线图

    史上最全的javascript学习路线图 JavaSctipt学习路线 完成整个课程大纲需要花上6~8周的时间,将学会完整的JavaScript语言(包括jQuery和一些HTML5).如果你没有时间 ...

  5. 三个臭皮匠,顶上一个诸葛亮——在Google Ideathon上Design Thinking分享

    4月26日很荣幸的被邀请参加Google Ideathon做Design Thinking的分享. 这次主要分享了Design Thinking的基本方法流程,以及在真实项目的运用.现在整理一下当时选 ...

  6. 海康威视频监控设备Web查看系统(二):服务器篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...

  7. 如何理解<T extends Comparable<? super T>>

    在看java容器类的时候经常可以看到<T extends Comparable<? super T>>,感觉十分不解? 我们觉得<T extends Comparable ...

  8. hadoop之hive基本操作

    -- 清空表中的数据,保留表结构 truncate table tmp_userid; '); -- 搜索库或表支持正则表达式 show tables 'sa*'; show tables in ba ...

  9. ZooKeeper学习第四期---构建ZooKeeper应用(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4064992.html 一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那 ...

  10. OpenProj打开不了或者提示”Failed to load Java VM Library”的错误的解决方案

    一.双击打开OpenProj.exe没反应的解决方案: 1) 修改OpenProj1.4.0.ini,将Maximum Version=any改为Maximum Version=1.7,保存. 2)这 ...