正题


大意

有n个野人,每个野人有一个初始山洞CiCiC_i,每次向前移动距离PiPiP_i,寿命LiLiL_i,如果野人走到了最后一个山洞那么继续就好回到第一个山洞,求至少多少个山洞才可以让野人们不会发生冲突。


解题思路

我们可以枚举答案,然后我们要判断是否冲突,我们可以枚举两个野人然后列出式子:

Ci+Pix≡Cj+Pjx(mod  l)Ci+Pix≡Cj+Pjx(modl)

C_i+P_ix\equiv C_j+P_jx(mod\ \ l)
如果这个式子有解且最小解
x<=Li/Ljx<=Li/Ljx那么就会有冲突。
我们先把式子转换一下

(Ci−Cj)+(Pi−Pj)x≡0(mod  l)(Ci−Cj)+(Pi−Pj)x≡0(modl)

(C_i-C_j)+(P_i-P_j)x\equiv 0(mod\ \ l)

(Ci−Cj)+(Pi−Pj)x=ly(Ci−Cj)+(Pi−Pj)x=ly

(C_i-C_j)+(P_i-P_j)x=ly

(Pi−Pj)x−ly=(Ci−Cj)(Pi−Pj)x−ly=(Ci−Cj)

(P_i-P_j)x-ly=(C_i-C_j)
然后我们进行扩欧


代码

#include<cstdio>
#include<algorithm>
using namespace std;
int x,y,n,c[16],p[16],l[16],maxc,d,A,B,g;
bool flag;
int gcd(int a,int b)//同余
{if (b==0){x=1;y=0;return a;}d=gcd(b,a%b);int k=x;x=y;y=k-a/b*y;return d;
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d%d",&c[i],&p[i],&l[i]);maxc=max(maxc,c[i]);}while (1){flag=false;for (int i=1;i<n;i++){for (int j=i+1;j<=n;j++){A=c[i]-c[j];B=p[j]-p[i];if (B<0){A=-A;B=-B;//取反,因为是   -ly}d=gcd(B,maxc);g=maxc/d;g=((x*(A/d))%g+g)%g;//最小解if (!(A%d)&&g<=l[i]&&g<=l[j])//判断{flag=true;break;}}if (flag) break;}if (!flag) break;maxc++;//枚举}printf("%d",maxc);
}

jzoj1158-荒岛野人【扩欧,gcd,同余方程】相关推荐

  1. P1082-扩欧模板同余方程【扩欧,数论】

    正题 链接: https://www.luogu.org/record/show?rid=7914999 大意 就是 ax≡1(modb)ax≡1(modb) ax≡1(modb) 给出a和b求x 解 ...

  2. POJ2142-The Balance【扩欧】

    前言 感谢x某q的帮助 这是它的博客(只有找本人才会解释的博客): https://blog.csdn.net/sugar_free_mint/article/details/80755188 正题 ...

  3. bzoj3122 [Sdoi2013]随机数生成器(bsgs+扩欧+数列)

    Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意 ...

  4. SGU - 106 The equation(扩欧+细节处理)

    传送门 题目大意 给出 a x + b y + c = 0 ax+by+c=0 ax+by+c=0这一二元一次不定方程,求满足 { ( x , y ) ∣ x ∈ [ l x , r x ] , y ...

  5. P1516-青蛙的约会【扩欧,同余方程】

    #正题 链接: https://www.luogu.org/record/show?rid=7935281 ##大意 两只青蛙往相同方向绕圈,A蛙一次跳n米在x出发,B蛙一次跳m米在y出发,一圈长度L ...

  6. 荒岛野人[exgcd]

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

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

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

  8. 题解【luogu P2421 bzoj P1407 [NOI2002]荒岛野人】

    洛谷题目链接 bzoj题目链接 题目大意:给定\(n\)组\(C_i, P_i, L_i\),求最小的\(M\)使得对于任意的\(i,j (1 \leq i, j \leq n)\) \[C_i + ...

  9. POJ2115-C Looooops【扩欧,同余】

    正题 链接: http://poj.org/problem?id=2115 大意 就是给出个循环 for(i=A;i!=B;i=(i+C)mod2k)for(i=A;i!=B;i=(i+C)mod2k ...

最新文章

  1. 可执行SQL文的mybatis工具类
  2. 30秒清除你电脑中的垃圾(使你电脑急速如飞)
  3. IE盒模型和标准盒模型
  4. devstack安装OpenStack Pike版本 (OVN+VLAN)
  5. Linux云服务器安装JDK详细步骤
  6. Django启动服务器时,报错mysql的2059错误的原因。
  7. 谷歌浏览器怎么禁用flash flash禁用方法分享
  8. SQL Server -- 如何书写优雅、漂亮的SQL脚本?
  9. 计算机毕业设计中用js+html+java文件下载(一)
  10. C++下面 计算时间
  11. 博文视点Open Party第10期:PPT专场
  12. android 点击文本框 不调用键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...
  13. android勾选控件_【Android 开发】:UI控件之复选框控件 CheckBox 的使用方法
  14. 你画我猜游戏html源代码,微信小程序你画我猜demo完整源码
  15. 如何快速熟悉一套程序的框架结构
  16. NVIDIA、CUDA、CUDNN、PyTorch安装吐血整理!!!
  17. 计算机信息技术培训互评 评语,互评评语大全
  18. 流言终结者 1080P画质都一样?(下)
  19. win7系统卸载完WPS后,office2007图标显示不正常,及每次打开都要进行配置的问题的解决方案
  20. java 创建水果_java程序题:定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果、...

热门文章

  1. linux服务器出现黄,linux服务器出现严重故障后的原因以及解决方法
  2. java如何运行一个任务_如何每天从Java运行任务?
  3. php父子遍历,php无限分类父子追溯方法
  4. makefile obj文件路径_Makefile一问:如何修改.o输出文件的输出路径 Linux/Unix社区 / 程序开......
  5. 查看linux的计划任务日志,查看计划任务日志(共5篇).docx
  6. php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置
  7. 吴恩达DeepLearningCourse5-序列模型
  8. [mybatis]缓存_一级缓存_一级缓存失效的四种情况
  9. 高等数学上-赵立军-北京大学出版社-题解-练习5.7
  10. SQL9 查找除复旦大学的用户信息(数据库否定语句写法)