BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)
zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队。。。2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞;
然而第一题巨鬼畜,想了40min发现似乎不可做(人傻),然而BC也在搞。。。于是开始做第四道;
大约1h10’ B题A了。。1h30' C题也A了= =;
后来去搞F,公式推得很快,并且很自信是对的。。于是筛!搞!,一交 TLE?!,然后意识到 结果可以直接筛,可以省去搞得过程
不虚,改!!然后时间到了。。。毫无贡献的傻逼一个。。。。可怕。
于是搞了下第四题D:
1407: [Noi2002]Savage
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 1128 Solved: 513
[Submit][Status][Discuss]
Description
Input
第1行为一个整数N(1<=N<=15),即野人的数目。第2行到第N+1每行为三个整数Ci, Pi, Li (1<=Ci,Pi<=100, 0<=Li<=106 ),表示每个野人所住的初始洞穴编号,每年走过的洞穴数及寿命值。
Output
仅包含一个数M,即最少可能的山洞数。输入数据保证有解,且M不大于106。
Sample Input
3
1 3 4
2 7 3
3 2 1
Sample Output
6
该样例对应于题目描述中的例子。
HINT
Source
分析:
此题但是想到是方程组,于是直接往中国剩余定理上想了。。事后发现其实只需要 解线性的同余方程 即可,仅仅需要拓展欧几里得。。
枚举m,然后利用拓欧进行判定。
首先发现规律:(loc为初始洞穴,mov为移动数,ans为相撞所需年数,m为洞穴数)
loc【i】+mov【i】*ans=loc【j】+mov【j】*ans (mod m)
于是移项得:
(mov【i】-mov【j】) *ans=loc【j】-loc【i】 (mod m)
判定即可;
值得注意的几个小地方:
为了取模的方便,可以把初始的洞穴序号-1;
题目并不符合二分的性质,当然数据范围,枚举绝对可行;
转成不定方程后,mov【i】-mov【j】与m未必互质,所以应该先同除一个gcd;
最后,如果有解,且解<=lif【i】、lif【j】(寿命年份)即不可行;
(偶对,似乎网上有用中国剩余定理解得。。然而我当时并不能想出来,人傻╮(╯▽╰)╭)
坑了我自己的一个地方。。
这破地方开始没注意于是坑了近10分钟。。
code:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int loc[20],mov[20],lif[20];
int st=0;
int x,y;int gcd;
void exgcd(int a,int b,int &x,int &y,int &gcd)
{
if (b==0) {gcd=a; x=1; y=0; return;}
exgcd(b,a%b,y,x,gcd);
y-=a/b*x;
}
bool check(int m)
{
for (int i=1; i<=n-1; i++)
for (int j=i+1; j<=n; j++)
{
int dloc=((loc[j]-loc[i])%m+m)%m;
int dmov=((mov[i]-mov[j])%m+m)%m;
exgcd(dmov,m,x,y,gcd);
if ((dloc%gcd)!=0) continue;
dloc/=gcd;
int mm=m/gcd;int ans=(dloc*x%mm+mm)%mm;
if (ans<=lif[i] && ans<=lif[j]) return false;
}
return true;
}
int main()
{
scanf("%d",&n);
for (int i=1; i<=n; i++)
{
scanf("%d%d%d",&loc[i],&mov[i],&lif[i]);
st=max(st,loc[i]);loc[i]--;
}
for (int i=st;;i++)
if (check(i)) {printf("%d\n",i);break;}
return 0;
}
BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)的更多相关文章
- [P1516]青蛙的约会 (扩展欧几里得/中国剩余定理?)
每日做智推~ 一看就是一道数学题. 再看是一道公约数的题目. 标签是中国孙子定理. 题解是扩展欧几里得 (笑) 一开始没看数据范围 只有50分 开一个longlong就可以了 #include< ...
- 【lydsy1407】拓展欧几里得求解不定方程+同余方程
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1407 题意: 有n个野人,野人各自住在第c[i]个山洞中(山洞成环状),每年向前走p[i] ...
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
Power of Fibonacci Time Limit: 5 Seconds Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...
- UVA.12169 Disgruntled Judge ( 拓展欧几里得 )
UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...
- POJ.2142 The Balance (拓展欧几里得)
POJ.2142 The Balance (拓展欧几里得) 题意分析 现有2种质量为a克与b克的砝码,求最少 分别用多少个(同时总质量也最小)砝码,使得能称出c克的物品. 设两种砝码分别有x个与y个, ...
- Modular Inverse (拓展欧几里得求逆元)
The modular modular multiplicative inverse of an integer a modulo m is an integer xsuch that a-1≡x ( ...
- Codeforces Round #451 (Div. 2) B. Proper Nutrition【枚举/扩展欧几里得/给你n问有没有两个非负整数x,y满足x·a + y·b = n】
B. Proper Nutrition time limit per test 1 second memory limit per test 256 megabytes input standard ...
- NOIP2012拓展欧几里得
拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...
随机推荐
- PAT 1063 Set Similarity (25)
题意:给你n个集合,k次询问,每次询问求两个集合的(交集)/(并集). 思路:k有2000,集合大小有10000.先将每个集合排序,对每个询问分别设两个指针指向两个集合的头.设a[i]为指针1的值,b ...
- AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 年轻的拉尔夫开玩笑地从一 ...
- 利用appscan进行自动化定期安全测试
Appscan的强大众所周知,如果可以自动执行定期安全测试,岂不是美事一件? 事实上,appscan提供了计划扫描的选项,配合windows的计划任务,可以按需设定. 1.打开appscan中的“工具 ...
- Windows server 2008系统基本优化
前几天用上了Windows server 2008刚开始还真不习惯,毕竟是做服务器用的系统和娱乐操作系统有很大区别.先总结几点,以后慢慢更新 安装Win2008驱动: 大部分支持vista系统的驱动都 ...
- IOS定位服务的应用
IOS定位服务的应用 一.授权的申请与设置 二.定位服务相关方法 三.定位服务代理的相关方法 四.定位服务获取到的位置对象 五.航标定位得到的航标信息对象 IOS定位服务的应用 一.授权的申请与设置 ...
- Maven 小结
Maven 的各项功能通过插件实现,有需要的时候学习那些插件的配置即可 一般一个大型项目会有 A:父管理工程,定义了所有的依赖和插件 B:工具工程 C:web 项目的父工程,同时也是一个聚合工程 D: ...
- work_queue 函数调用栈
init_workqueues ---> create_worker --> kthread_create_on_node
- POJ 3461 Oulipo
E - Oulipo Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- 07Spring_bean属性的依赖注入-重点@Autowriter
在spring2.5 版本,没有提供基本类型属性注入 ,但是spring3.0引入注解@Value 所以在Spring3.0中属性的注入只可以这么写.
- 【转】【Asp.Net】Asp.net发送邮件的两种方法小结
这几天看了一下Asp.net发送邮件方面的东西,记得之前的IIS6上有SMTP服务器,可以直接利用这个进行邮件发送,现在的开发环境是Windows 7,找了半天没有找到,到网络上查了才知道原来wind ...