[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. 人像美妆---妆容迁移算法研究(Makeup transfer)

    原文:人像美妆---妆容迁移算法研究(Makeup transfer) 对于人像美妆算法,现在的美妆相机.玩美彩妆之类的app已经做的比较成熟了,但是具体算法,基本网络上是杳无可查,今天本人介绍一种自 ...

  2. oracle data guard配置dg_broker

    https://community.oracle.com/docs/DOC-1007327 本文主要包括以下内容: 1.  配置dg broker,需要完成以下几个工作: 在主备库配置静态监听注册,注 ...

  3. .NET Core整合log4net以及全局异常捕获实现

    在使用log4net之前先安装log4net.这里操作很简单,通过nuget下载并安装log4net很方便.如下图. log4net配置 <?xml version="1.0" ...

  4. EF 里的 join and Group Join

    join ); pageCount = _db.Orders.Count(); return _db.Orders.OrderByDescending(c=>c.ID).Skip(skip).T ...

  5. QTcpSocket类和QTcpServer类

    QTcpSocket 详细描述:QTcpSocket 类提供一个TCP套接字TCP是一个面向连接,可靠的的通信协议,非常适合于连续不断的数据传递QTcpSocket 是QAbstractSocket类 ...

  6. 我整理的一份来自于线上的Nginx配置(Nginx.conf),希望对学习Nginx的有帮助

    我整理了一份Nginx的配置文件说明,是真正经历过正式线上考验过.如果有优化的地方,也请朋友们指点一二,整理出一份比较全而实用的配置. 主要包含配置:负载均衡配置,页面重定向,转发,HTTPS和HTT ...

  7. 你一定能看懂的JDK动态代理

    前言:阅读这篇文章前,一定要知道什么是代理模式,具体可以参考这篇文章<设计模式(一):代理模式>. 在<设计模式(一):代理模式>一文中说了,程序员思思买书有两种选择:一种是选 ...

  8. Unity AssetBundle,Asset,GameObject之间的联系

    一.问题 首先,这里说明一下,我这边的GameObject有点笼统,就是表达的是游戏中的具体实例. 二.概念 1)Asset是什么? 游戏中具体的资源,像texture,mesh,material,s ...

  9. kubernetes实战篇之dashboard搭建

    系列目录 kubernetes dashboard是kubernetes官方提供的web管理界面,通过dashboard可以很方便地查看集群的各种资源.以及修改资源编排文件,对集群进行扩容操作,查看日 ...

  10. Java 8 新特性-Stream更优雅的处理集合入门

    Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...