[APIO 2010] [LOJ 3144] 奇怪装置 (数学)

题面

分析

考虑t1,t2时刻坐标相同的条件

\[\begin{cases} t_1+\lfloor \frac{t_1}{B} \rfloor \equiv t_2+\lfloor \frac{t_2}{B} \rfloor (\mathrm{mod}\ A) \\ t_1 \equiv t_2 (\mathrm{mod}\ B)\\ \end{cases}
\]

由第二个式子,可以令\(t_1=t_2+Bk(k \in N)\)

代入式子1,\(t_2+Bk+\lfloor \frac{t_2}{B}+k \rfloor \equiv t_2+\lfloor \frac{t_2}{B} \rfloor(\mathrm{mod} \ A)\)

消元得\((B+1)k \equiv 0 (\mathrm{mod} \ A)\)

因此\(k|\frac{A}{gcd(A,B+1)}\),

代入上式,\(t_1=t_2+B\frac{A}{gcd(A,B+1)}(k \in N)\)

\(t_1 \equiv t _2 \ (\mathrm{mod} \frac{AB}{gcd(A,B+1)})\)

因此,可以把l,r取模\(\frac{AB}{gcd(A,B+1)}\),然后问题就变成在\([0,\frac{AB}{gcd(A,B+1)}]\)上有若干条线段,求线段的并

直接排序再\(O(n)\)扫一遍即可

注意\(\frac{AB}{gcd(A,B+1)}\)可能会超过long long范围,但注意到l,r都\(\leq 2 \times 10^{18}\),如果\(\frac{AB}{gcd(A,B+1)}\)超过就强行设成$ 2 \times 10^{18}$

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000000
#define maxr 2e18
using namespace std;
typedef long long ll;
ll n,A,B;
inline ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
} struct seg{
ll l;
ll r;
seg(){ }
seg(ll _l,ll _r){
l=_l;
r=_r;
}
friend bool operator < (seg p,seg q){
if(p.l==q.l) return p.r<q.r;
else return p.l<q.l;
}
}a[maxn+5],b[maxn*2+5];
int cnt=0;
int main(){
scanf("%I64d %I64d %I64d",&n,&A,&B);
for(int i=1;i<=n;i++){
scanf("%I64d %I64d",&a[i].l,&a[i].r);
}
ll C=A/gcd(A,B+1);
if(maxr/B<=C) C=maxr; //B*C<=2e18
else C=C*B;
for(int i=1;i<=n;i++){
if(a[i].r-a[i].l>=C){
printf("%I64d\n",C);
return 0;
}
if(a[i].l%C<=a[i].r%C){
b[++cnt]=seg(a[i].l%C,a[i].r%C);
}else{
b[++cnt]=seg(0,a[i].r%C);
b[++cnt]=seg(a[i].l%C,C-1);
}
}
sort(b+1,b+1+cnt);
// cnt=unique(b+1,b+1+cnt)-b-1;
ll l=b[1].l,r=b[1].r;
ll ans=0;
for(int i=2;i<=cnt;i++){
if(b[i].l>r+1){
ans+=(r-l+1);
l=b[i].l;
r=b[i].r;
}else if(b[i].r>r){
r=b[i].r;
}
}
ans+=r-l+1;
printf("%I64d\n",ans);
}

[APIO 2010] [LOJ 3144] 奇怪装置 (数学)的更多相关文章

  1. 【LOJ#3144】[APIO2019]奇怪装置(数论)

    [LOJ#3144][APIO2019]奇怪装置(数论) 题面 LOJ 题解 突然发现\(LOJ\)上有\(APIO\)的题啦,赶快来做一做. 这题是窝考场上切了的题嗷.写完暴力之后再推了推就推出正解 ...

  2. #3144. 「APIO 2019」奇怪装置

    #3144. 「APIO 2019」奇怪装置 题目描述 考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\). 经过研究,科学家对该装置得出了一个 ...

  3. 【LG5444】[APIO2019]奇怪装置

    [LG5444][APIO2019]奇怪装置 题面 洛谷 题目大意: 给定\(A,B\),对于\(\forall t\in \mathbb N\),有二元组\((x,y)=((t+\lfloor\fr ...

  4. 【LOJ #3144】「APIO 2019」奇怪装置

    题意: 定义将一个\(t\)如下转换成一个二元组: \[ f(t) = \begin{cases} x = (t + \left\lfloor \frac{t}{B} \right \rfloor) ...

  5. 「APIO 2019」奇怪装置

    题目 考虑推柿子 最开始的想法是如果两个\(t\)在\(mod\ B\)意义下相等,那么只需要比较一下\((t+\left \lfloor \frac{t}{B}\rfloor \right)mod\ ...

  6. [APIO2019T1]奇怪装置

    考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数x和y.经过研究,科学家对该装置得出了一个结论:该装置是一个特殊的时钟,它从过去的某个时间点开始测量经过的时刻数t,但该装 ...

  7. 题解-APIO2019奇怪装置

    problem loj-3144 题意概要:设函数 \(f(t)\) 的返回值为一个二元组,即 \(f(t)=((t+\lfloor \frac tB\rfloor)\bmod A, t\bmod B ...

  8. 【BZOJ 1911】【APIO 2010】特别行动队

    http://www.lydsy.com/JudgeOnline/problem.php?id=1911 夏令营里斜率优化的例题,我调了一晚上,真是弱啊. 先推公式吧($sum_i$表示$x_1 \d ...

  9. [bzoj 1911][Apio 2010]特别行动队(斜率优化DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1911 分析: 首先可以的到裸的方程f[i]=max{f[j]+a*(Si-Sj)^2+b*(S ...

随机推荐

  1. 使用VisualStudio 开发Arduino

    Arduino IDE界面简洁,整体功能还算完善,相比其他编译器明显的不足就是不能进行硬件调试,再就是没有代码提示功能,文件关系不清晰.头文件打开不方便. VisualStudio作为时下最为流行的W ...

  2. [CF434D Div1] Tree

    问题描述 给定一颗 n 个点的树,树边带权,试求一个排列 P,使下式的值最大 \[ \sum_{i=1}^{n-1}maxflow(P_i,P_{i+1}) \] 其中 maxflow(s, t) 表 ...

  3. UVALive 3263: That Nice Euler Circuit (计算几何)

    题目链接 lrj训练指南 P260 //==================================================================== // 此题只需要考虑线 ...

  4. 解决webstorm卡顿问题,下面详细设置方法,使得webstorm快速打开

    具体办法: 找到WebStorm.exe.vmoptions这个文件,路径如下 webstorm安装主目录>bin>WebStorm.exe.vmoptions 更改为 第二行:-Xms1 ...

  5. Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)

    Vue组件通讯   Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...

  6. POJ 3261 Milk Patterns ( 后缀数组 && 出现k次最长可重叠子串长度 )

    题意 : 给出一个长度为 N 的序列,再给出一个 K 要求求出出现了至少 K 次的最长可重叠子串的长度 分析 : 后缀数组套路题,思路是二分长度再对于每一个长度进行判断,判断过程就是对于 Height ...

  7. js返回上一页并刷新 代码整理

    真正好用: 强制载入后刷新一次 在要载入的页面加入以下代码: <script> if(window.name != "bencalie"){ location.relo ...

  8. 【bzoj2821】作诗(Poetize)

    *题目描述: 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗 之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次,每次只阅 ...

  9. CG-CTF | 综合题

    开场就是一个js混淆,直接丢到console里面 然后根据tip查头: 看到这个tip,一开始还以为要考注入了,用访问历史来进行注入,后来发现是我高估这题了,,,:

  10. kali语言设置

    1.直接在终端命令 dpkg-reconfigure locales 然后按需选择支持字符编码:en_US.UTF-8(英文).zh_CN.GBK(中文).zh_CN.UTF-8(中文) (注:选择字 ...