传送门

待参考资料:

  [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. DOM查找元素的方法总结

    按HTML查找:优点:范围可大可小,可设置条件:包括五种方式:1.按id查找:2.按标签名查找:var elems = parent.getElementsByTagName('');3.按name属 ...

  2. 修正Thinkphp 3.2 分页Page类以支持URL路由

    http://www.thinkphp.cn/topic/22114.html 最终目的实现以http://www.fl900.com/product/lists/1-0-0-1.html这样的URL ...

  3. Oracle之PL/SQL编程

    PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...

  4. 分布式Jmeter

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

  5. parkingLot

    一个支付宝停车支付生活号前端页面 //index.html //自定义键盘 <!DOCTYPE html> <html> <head> <meta chars ...

  6. 简单线性回归(梯度下降法) python实现

    grad_desc .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { bord ...

  7. 2019.9.19登陆注册猜数字给奖品combo

    #注册函数 def register(): registor_count = 0 while registor_count < 3: username_inp = input('user nam ...

  8. 解决:"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position"错误

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Haiyang_Duan/article/ ...

  9. 项目上使用的每月1日自动导出Zabbix性能数据的python脚本

    基于zabbix-manager python2.7 #!/usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "life&q ...

  10. 从DataTable中删除不被控件支持的字段类型

    DataTable dt = DB.GetDataTable(sql);                        //从dt中删除不被控件支持的字段类型            for (int ...