洛谷题目链接

bzoj题目链接


题目大意:给定\(n\)组\(C_i, P_i, L_i\),求最小的\(M\)使得对于任意的\(i,j (1 \leq i, j \leq n)\)
\[C_i + P_i \times x \equiv C_j + P_j \times x \pmod M\]

不成立

(这里的不成立指的是无解或者解出来的 \(x<\min(L_i,L_j)\),即相遇之前有一人死掉

其中\(x\)为正整数(就是走了\(x\)天相遇)

分析

从小到大枚举\(M\)(注意没有单调性不能二分

原式可变形为
\[C_i + P_i \times x = C_j + P_j \times x +M \times y\]
\[(P_i-P_j)\times x - M \times y = C_j-C_i \]
若无解,则此时的\(M\)为所求
若有解,用扩展欧几里得解出该方程的最小解\(x_{min}\)。
如果\(x_{min}<\min(L_i,L_j)\),问题解决;否则继续枚举

代码:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cstring>using namespace std;int n, C[20], p[20], l[20], mx = -1;
inline int gcd(int a, int b)
{if(!b) return a;else return gcd(b, a % b);
}
inline void exgcd(int a, int b, int &x, int &y)
{if(!b) { x = 1, y = 0; return ; }exgcd(b, a % b, x, y);int t = x; x = y, y = t - (a / b) * y;
}
inline bool check(int m)
{for(int i = 1; i <= n; i++)for(int j = i + 1; j <= n; j++){int a = p[j] - p[i], b = m, c = C[i] - C[j], x = 0, y = 0, g = gcd(a, b);if(c % g == 0){a /= g, b /= g, c /= g;exgcd(a, b, x, y);b = abs(b);x = ((x * c) % b + b) % b;if(!x) x += b;if(x <= min(l[i], l[j])) return false;}}return true;
}
int main()
{scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d%d%d", &C[i], &p[i], &l[i]); mx = max(mx, C[i]);}for(int i = mx;;i++)if(check(i)){printf("%d\n", i);return  0;}return 1;//防抄
}

转载于:https://www.cnblogs.com/acfunction/p/8858577.html

题解【luogu P2421 bzoj P1407 [NOI2002]荒岛野人】相关推荐

  1. 题解 guP2421 【[NOI2002]荒岛野人】

    本题珂以转换成一个式子 即求Ci + Pi × x ≡ Cj Pj × x (mod M) 的最小答案是否大于寿命最小值 以人数为最小值开始枚举山洞数,用扩展欧几里得计算最优答案是否大于寿命 若不大于 ...

  2. [NOI2002]荒岛野人 数论

    题目:https://www.luogu.org/problemnew/show/P2421 题意: n个人 Ci表示每个人的位置 , Pi表示每个人的走的长度 Li表示生命值.不妨我们可以枚举总共有 ...

  3. Luogu P1198 BZOJ 1012 最大数 (线段树)

    Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...

  4. 题解 luogu P2568 GCD

    题解 luogu P2568 GCD 时间:2019.3.11 欧拉函数+前缀和 题目描述 给定整数\(N\),求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x, ...

  5. [Luogu P4292] [BZOJ 1758] [WC2010]重建计划

    BZOJ 传送门 洛谷传送门 题目描述 X国遭受了地震的重创, 导致全国的交通近乎瘫痪,重建家园的计划迫在眉睫.X国由NNN个城市组成, 重建小组提出,仅需建立N−1" role=" ...

  6. 荒岛野人[exgcd]

    Description 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,-,M.岛上住着N个野人,一开始依次住在山洞C1,C2,-,CN中,以后每年,第i个野人会沿顺 ...

  7. 【luogu 2709 / BZOJ 3781】小B的询问

    [原题题面]传送门 [题解大意] 莫队.这题未免太果. [code] #include<bits/stdc++.h> using namespace std; #define File & ...

  8. [Luogu P2597] [BZOJ 2815] [ZJOI2012]灾难

    洛谷传送门 BZOJ传送门 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生 ...

  9. [Luogu P4168] [BZOJ 2724] [Violet]蒲公英

    洛谷传送门 BZOJ传送门 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也 ...

最新文章

  1. c语言变量及输入输出
  2. Spring Boot持久化的简单实现
  3. JavaScript学习笔记之 数组方法一 堆栈 和队列
  4. 深入理解Java幂等性
  5. HDU 5037 Frog(2014年北京网络赛 F 贪心)
  6. 负数的 %求余和取模
  7. leetcode387. 字符串中的第一个唯一字符
  8. 【链接转载保存】Collections.singletonList方法的使用
  9. php js 比较,PHP与JS的比较
  10. [VB]多级目录创建函数,支持很深的目录创建。
  11. windows下 dos 执行php 代码
  12. 梨花带雨html音乐播放器源码,梨花带雨网页悬浮音乐播放器V3开源
  13. 请不要滥用SharedPreference
  14. PPT文件怎么转换成图片
  15. 认真的雪歌词的c语言编码,薛之谦《认真的雪》歌词
  16. 万豪酒店品牌持续拓展中国东南区,温州首家万豪酒店开业
  17. 计算机从应用上看向那个方向发展,(总)2019年6月一级Ms Office试题
  18. 商品房销售价格指数中的同比,环比,定基
  19. 雅马哈音乐会钢琴-e-Instruments Session Keys Grand Y Kontakt
  20. SpringBoot 实现邮件发送功能

热门文章

  1. 我们这些中年人,多处在管理层面
  2. 为什么现在很小的孩子都会玩游戏,他们真的看得懂吗?
  3. 你们听过最感人的故事是什么?
  4. 大家都是怎么过催收的生活?
  5. 吃虾到底要不要去虾线?
  6. python之三元表达式嵌套三元表达式解析
  7. ssms 连接 ssis_在SSMS中手动设置SSIS包加密
  8. Date与String之间的转换
  9. Dreamweaver里文档工具栏位置
  10. webkit内核浏览器的CSS写法