题意:在一个岛上,有n个野人。这些人开始住在c号洞穴,每一年走p个洞,而且他的生命有L年.问如果岛上的洞穴为一个圈,那么这个圈至少有多少个,才能使他们每年都不在同一个洞穴里。

分析:先假设一种简单的情况!假设有2个人。

   第一个人:c:1, p:2 ,L=3

   第二个人:c:   2,   p:   3,   L=4

假如:一共有8个洞:如图:

    这样就能保证。

数学知识:欧几里得拓展

     不定方程ax+by=c,由得,若x,y有整数x解(正负无所谓,但是注意正数解,在mod运算中)则, c能被gcd(a, b);

分析:如果,有两个野人在某一个洞穴相遇,则表明 (p1-p2)x+by=c1-c2;  有解。但是,如果他的最小整数解都小于两个野人的寿命,则也可以。

   那么,就是在枚举一共有多少山洞,然后判断是否满足。第一个满足的就是最小的洞数。

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. #include<algorithm>
  5. using namespace std;
  6. int c[], p[], L[];
  7. int n;
  8.  
  9. int gcd(int a, int b){
  10. return b == ? a : gcd(b, a%b);
  11. }
  12.  
  13. void exgcd(int a, int b, int &x, int &y){
  14. if (b == ){ x = ; y = ; return; }
  15. exgcd(b, a%b, x, y);
  16. int t = x; x = y; y = t - a / b*y;
  17. }
  18. bool fun(int m){
  19. int x, y, A, B, C, t;
  20. for (int i = ; i <= n; ++i)
  21. for (int j = i + ; j <= n; ++j){
  22. A = p[i] - p[j]; B = m; C = c[j] - c[i];
  23. t = gcd(A, B);
  24. if (C%t == ){
  25. A /= t; B /= t; C /= t;
  26. exgcd(A, B, x, y);
  27. B = abs(B);
  28. x = ((C*x) % B + B) % B;
  29. if (x <= min(L[i], L[j]))return ;
  30. }
  31. }
  32. return ;
  33. }
  34. int main()
  35. {
  36. int maxn = ;
  37. scanf("%d", &n);
  38. for (int i = ; i <= n; ++i){
  39. scanf("%d%d%d", &c[i], &p[i], &L[i]);
  40. maxn = max(maxn, c[i]);
  41. }
  42. for (int i = maxn;; ++i){
  43. if (fun(i)){ printf("%d\n", i); return ; }
  44. }
  45. }

[Noi2002]Savage(欧几里得拓展)的更多相关文章

  1. NOIP2012拓展欧几里得

    拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...

  2. BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)

    zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...

  3. bzoj1407 [Noi2002]Savage——扩展欧几里得

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1407 看到一定有解,而且小于10^6,所以可以枚举: 判断一个解是否可行,就两两判断野人 i ...

  4. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

  5. bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得

    这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...

  6. POJ 2891 Strange Way to Express Integers(拓展欧几里得)

    Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...

  7. POJ1061 青蛙的约会-拓展欧几里得

    Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...

  8. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)

    污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...

  9. poj2891 拓展欧几里得

    //Accepted 164 KB 16 ms //拓展欧几里得 //m=a1*x+b1 --(1) //m=a2*(-y)+b2 --(2) //->a1*x+a2*y=b2-b1 //由欧几 ...

随机推荐

  1. C++的静态联编和动态联编

    联编的概念 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系. 意思就是这个函数的实现有多种,联编就是把调用和 ...

  2. 关于height,line-height导致的样式混乱的问题

    设置固定border,padding,line-height,但是发现在ie下input标签竟然line-height不起作用,导致实际的高度无法控制 解决方法:添加固定高度height.

  3. Java基础——Oracle(六)

    一.数据字典和动态性能视图 数据字典: oracle中的重要组成部分,提供了数据库的一些系统信息,记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为 sys 用户.用户只能在数据字典上 ...

  4. java_查找里程

    题目内容: 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. 注意:任何两个城市之间的里程都已经给出,不需要计算经第三地中转. ...

  5. 【代码笔记】Web-HTML-列表

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. 【代码笔记】Web-HTML-标题

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. 常见聚类算法——K均值、凝聚层次聚类和DBSCAN比较

    聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇).其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的.组内相似性越大,组间差别越大,聚类就越好. 先介绍下聚类的不 ...

  8. (后台)There is already 'jy.controller.jyadmin.JyDealerPackingReturnController' bean method

    项目报了一个错误,百度翻译了一下: “我已经有jy.controller.jyadmin.jydealerpackingreturncontroller豆方法公共org.springframework ...

  9. genymotion和adb的解决方法

    问题: 安装了genymotion后.再单独安装了adb 然后在关闭genymotion后,输入adb devices,下方显示为空,然后打开genymotion,cmd输入adb devices,显 ...

  10. Socks5 RFC1928协议中文版

    除了这个意译版rfc1928外,其他人写的好像也有错误,都是一知半解. ☆ RFC 1928意译版(非直译版) http://www.ietf.org/rfc/rfc1928.txt http://w ...