传送门

待参考资料:

  [1]:https://www.cnblogs.com/Patt/p/9941200.html

•题意

  a君,b君存在幸运周期;

  a君在第[ L1+k·t1,R1+k·t1]天为幸运天;

  b君在第[ L2+k·t2,R2+k·t2]天为幸运天;

  求 a君,b君 同为幸运天数的最大的连续天数;

题解

  a君所有幸运天数开始的时刻为 La = L1+x·t1

  b君所有幸运天数开始的时刻为 Lb = L2+y·t2

  假设 a君 每个周期幸运的天数为 lena , b君的为 lenb

  ①如果 ∃ x,y 使得 La = Lb ,那么答案就是 min(lena,lenb);

  ②反之,根据贪心策略,两者的幸运天数开始越接近,那么两者的公共幸运天数就越多;

   也就是说,找到最小的非负整数 d1 使得 La + d1 = Lb 或最小的非负整数 d2 使得 La = Lb+d2

  如何判断①是否成立呢?

    根据拓展欧几里得,使得①成立当且仅当 GCD(t1,t2)  |  |Lb-La|;

  如果不成立,如何找到最小的d1,d2呢?

  

  由 ①② 可得 b1 = (L2-L1)%GCD(t1,t2),并且要确保 b1 > 0;

  同理可求b2

•Code

 #include<bits/stdc++.h>
using namespace std;
#define GCD(a,b) __gcd(a,b)
#define ll long long ll l1,r1,t1;
ll l2,r2,t2; ll Solve()
{
if(abs(l2-l1)%GCD(t1,t2) == )
return min(r1-l1+,r2-l2+); ll d1=(l2-l1)%GCD(t1,t2);
if(d1 < )
d1 += GCD(t1,t2); ll d2=(l1-l2)%GCD(t1,t2);
if(d2 < )
d2 += GCD(t1,t2); ///两者幸运天数无交集时,取min时会返回负数,所以需要对0取个max
return max(1ll*,max(min(r1-l1-d1+,r2-l2+),min(r1-l1+,r2-l2-d2+)));
}
int main()
{
scanf("%lld%lld%lld",&l1,&r1,&t1);
scanf("%lld%lld%lld",&l2,&r2,&t2);
printf("%lld\n",Solve()); return ;
}

Mail.Ru Cup 2018 Round 2 C. Lucky Days(拓展欧几里得)的更多相关文章

  1. Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

    设在第 $x$ 天二人都 lucky,则有 $\DeclareMathOperator{\lcm}{lcm}$ $ x = y_a t_a + R_a $ $ x= y_b t_ b + R_b$ 约 ...

  2. 【Mail.Ru Cup 2018 Round 2 C】 Lucky Days

    [链接] 我是链接,点我呀:) [题意] [题解] 题解的作者: manish_joshi 对于任意一个k 因为那条直线(关于x,y的方程可以看出一条直线)的斜率>= 所以肯定会经过第一象限. ...

  3. Mail.Ru Cup 2018 Round 2 Solution

    A. Metro Solved. 题意: 有两条铁轨,都是单向的,一条是从左往右,一条是从右往左,Bob要从第一条轨道的第一个位置出发,Alice的位置处于第s个位置,有火车会行驶在铁轨上,一共有n个 ...

  4. Mail.Ru Cup 2018 Round 3 B. Divide Candies

    题目链接 分析一下题意可以得到题目要求的是满足下面这个 公式的不同的i,ji,ji,j的方案数; 即(i2+j2)mod&ThinSpace;&ThinSpace; m=0 (n ≤  ...

  5. Mail.Ru Cup 2018 Round 3

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  6. Mail.Ru Cup 2018 Round 2

    A:阅读理解. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  7. [codeforces Mail.Ru Cup 2018 Round 3][B Divide Candies ][思维+数学]

    https://codeforces.com/contest/1056/problem/B 题意:输入n,m    求((a*a)+(b*b))%m==0的(a,b)种数(1<=a,b<= ...

  8. [codeforces Mail.Ru Cup 2018 Round 1 D][ xor 操作]

    http://codeforces.com/contest/1054/problem/D 题目大意:一个序列a1 a2...an,可以对若干个元素进行取反,使所得的新序列异或和为0的区间个数最多. 题 ...

  9. Mail.Ru Cup 2018 Round 3 Solution

    A. Determine Line Water. #include <bits/stdc++.h> using namespace std; ]; int main() { while ( ...

随机推荐

  1. 大合集 | 9 场 Dubbo Meetup 回顾视频和PPT下载

    2018年2月16日,Dubbo 加入 Apache 基金会孵化器,在随后的那个夏天,我们开始在全国(北京.上海.深圳.成都.杭州)和社区的用户们见面.认识.交个朋友,将社区的最新动态.Dubbo 的 ...

  2. Linux之Shell1

    1.输出命令:echo echo [选项] [输出内容] : -e  支持反斜线控制的字符转换.(类似于C语言的\) \\ 输出\本身 \t Tab键 \n 换行符 \f 换页符 ...  

  3. python2与python3爬虫中get与post对比

    python2中的urllib2改为python3中的urllib.request 四种方式对比: python2的get: # coding=utf-8 import urllib import u ...

  4. 盘点Apache毕业的11个顶级项目

    自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目 ...

  5. Directx11教程(16) D3D11管线(5)

    原文:Directx11教程(16) D3D11管线(5) 本章我们学习VS中具体做些什么事情? 首先再看看我们的VS shader代码: Clolor.vs - PixelInputType Col ...

  6. 分布式Jmeter

    遇到的问题 1.压力不够大 2.单台瓶颈 3.网络瓶颈 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机 ...

  7. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

  8. 【JZOJ4886】【NOIP2016提高A组集训第13场11.11】字符串

    题目描述 某日mhy12345在教同学们写helloworld,要求同学们用程序输出一个给定长度的字符串,然而发现有些人输出了一些"危险"的东西,所以mhy12345想知道对于任意 ...

  9. 【Django入坑之路】基础操作(过滤,继承,跳转)

    1:自定过滤器 1创建templatetags文件夹 2在里面创建自定义py文件:固定格式: from django import template from django.utils.safestr ...

  10. UVa 10220 【大整数】

    uva 10220 可采用uva 623这道题求N!,再最后稍微改一下就好. 参考代码: } #include<cstdio> #include<cstring> #inclu ...