1407: [Noi2002]Savage

其实答案远不到1e6
所以可以枚举!
设答案是m
那\(i,j\)的相遇就可以表示成\(P_ix+C_i=P_jx+C_j+ym\)
移向就是\((P_i-P_j)x-ym=C_j-C_i\)
套扩展欧几里得定理
如果\(C_j-C_i\mod gcd\ !=0\)说明不会相遇
否则的话求一下第一次相遇时间,如果大于一个的寿命也不会相遇
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define M 1000010
using namespace std;
int n,m,k,c[M],l[M],p[M],maxx,x,y;
int exgcd(int a,int b,int &x,int &y)
{
	if(!b) {x=1, y=0; return a;}
	int tmp=exgcd(b,a%b,y,x);
	y-=a/b*x; return tmp;
}
bool check(int k)
{
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
		{
			int a=p[i]-p[j], b=c[j]-c[i];
			if(a<0) a=-a, b=-b;
			int g=exgcd(a,k,x,y);
			if(b%g) continue;
			x*=b/g; int f=k/g;
			x=(x%f+f)%f; if(!x) x=f;
			if(x<=min(l[i],l[j])) return 0;
		}
	return 1;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&c[i],&p[i],&l[i]), m=max(m,c[i]);
	for(;;m++) if(check(m)) break;
	printf("%d",m);
}
												
											1407: [Noi2002]Savage的更多相关文章
- BZOJ 1407: [Noi2002]Savage( 数论 )
		
枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans ...
 - 【扩展欧几里得】Bzoj 1407: [Noi2002]Savage
		
Description Input 第1行为一个整数N(1<=N<=15),即野人的数目.第2行到第N+1每行为三个整数Ci, Pi, Li (1<=Ci,Pi<=100, 0 ...
 - bzoj 1407: [Noi2002]Savage
		
Description 解题报告: 因为给定答案范围,暴力枚举时间,然后再两两枚举野人,判断是否有可能在某一年相遇,我们设这一年为\(x\),那么显然相交的条件是: \(x*(p[i]-p[j])+y ...
 - bzoj 1407: [Noi2002]Savage【扩展欧几里得+中国剩余定理】
		
首先答案不会很大,所以枚举答案m,于是把问题转为了判定: 关于如何判定: 首先题目中虽然没说但是数据是按照初始洞穴编号排的序,所以并不用自己重新再排 假设当前答案为m,相遇时间为x,野人i和j,那么可 ...
 - BZOJ1407 NOI2002 Savage 【Exgcd】
		
BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...
 - [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 1407】[Noi2002]Savage ExGCD
		
我bitset+二分未遂后就来用ExGCD了,然而这道题的时间复杂度还真是玄学...... 我们枚举m然后对每一对用ExGCD判解,我们只要满足在最小的一方死亡之前无解就可以了,对于怎么用,就是ax+ ...
 - [BZOJ1407][NOI2002]Savage(扩展欧几里德)
		
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1407 分析: m,n范围都不大,所以可以考虑枚举 先枚举m,然后判定某个m行不行 某个 ...
 
随机推荐
- shiro教程3(加密)
			
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容 概念 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理, ...
 - .net敏捷开发框架 力软(learun) 让开发变的更简单
			
版本:6.1.6.2 体验地址:www.fishcmonkey.com 联系QQ:6539471
 - [android] 手机卫士保存安全号码
			
调用ListView对象的setOnItemClickListener()方法,设置条目的点击事件,参数:OnItemClickListener对象 使用匿名内部类实现,重写onClick()方法,传 ...
 - linux部分常见指令
			
游走指令 cd: 进入指定位置 cd / 进入到根目录 cd /home 进入到home文件夹 cd - 进入上次所在文件夹 比如 在 / 时 cd /usr/local到loca ...
 - LVOOP设计模式在路上(二)-- 策略模式
			
前言 最近工作还挺忙的,连着好些周都是单休了,今天休息在家就来写写关于策略模式的理解和labivew的实现. 正文 1.什么是策略模式 定义是这样描述的:它定义了算法家族,分别封装起来,让它们之间可以 ...
 - 利用echarts自定义环形图
			
一.代码 app.title = '通讯盒各版本用户占比'; option = { backgroundColor: '#0f0f31', title: { show:true, x:"le ...
 - css清楚浮动的class
			
.clearfix:after { display: table; visibility: hidden; clear: both; height:; content: ''; } 直接在浮动元素的父 ...
 - Django&Flask区别
			
Flask Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现. Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Wer ...
 - JqGrid: paging int asp.net
			
https://www.codeproject.com/Articles/1118363/GridView-with-Server-Side-Filtering-Sorting-and-Pa http ...
 - 文件夹生成zip
			
package com.leoodata.utils; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.Zi ...