传送门

待参考资料:

  [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. Directx11教程(32) 纹理映射(2)

    原文:Directx11教程(32) 纹理映射(2)     在写代码之前,我们先制作一个dds文件.从网上找到了一张照片,处理成为512*512,保存为jpg格式.     启动微软的directx ...

  2. Directx教程(28) 简单的光照模型(7)

    原文:Directx教程(28) 简单的光照模型(7)        现实生活中的点光源都是随着距离衰减的,比如一个电灯泡在近处会照的很亮,远处光线就很弱.本节中我们在前面光公式的基础上,再给漫反射和 ...

  3. prepareStatement设置参数,mysql数据出现中文‘?’的情景与解决方式

    在prepareStatement中传入中文的参数,mysql数据库中出现“?”号 try { Class.forName("com.mysql.jdbc.Driver"); co ...

  4. oracle如何限定特定IP访问数据库

    可以利用登录触发器.cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqln ...

  5. “不是不需要运维工程师,是人人皆是运维”|对话阿里云MVP蒋烁淼(上)

    摘要: 与湖畔大学首期学员.阿里云MVP.驻云创始人蒋烁淼面对面 [三位阿里云MVP(驻云CEO.首席架构师.大数据总监)<MVP时间>首次同台授课,“湖畔第一大脑” 蒋烁淼领头线上精讲, ...

  6. hibernate 出现Caused by: java.sql.SQLException: Column 'id' not found.异常

    用hibernate进行映射查询时,出现Caused by: java.sql.SQLException: Column 'id' not found 异常,检查数据库表及映射都有id且已经正确映射, ...

  7. python 列表索引

  8. jQuery学习笔记之可见性过滤选择器

    可见性过滤选择器是根据元素的可见和不可见状态来选择相应的元素. 显示隐藏的例子: <!DOCTYPE html> <html> <head> <script ...

  9. 原生JS使用Blob导出csv文件

    最近在做关于文件下载的需求:前端调用接口,然后对返回数据进行过滤.格式化,然后按表格内容拼接生成csv文件,让用户下载. 具体实现方式如下:let sourceData = { head: [ '时间 ...

  10. 逆序对(POJ2299 Ultra-QuickSort)

    #include<bits/stdc++.h> using namespace std; int n; ],b[],ans;//a为待排序数组,b为临时数组,ans为逆序对数 void m ...