#3144. 「APIO 2019」奇怪装置

题目描述

考古学家发现古代文明留下了一种奇怪的装置。该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\)。

经过研究,科学家对该装置得出了一个结论:该装置是一个特殊的时钟,它从过去的某个时间点开始测量经过的时刻数 \(t\),但该装置的创造者却将 \(t\) 用奇怪的方式显示出来。若从该装置开始测量到现在所经过的时刻数为 \(t\),装置会显示两个整数:\(x = ((t + \lfloor \frac{t}{B} \rfloor) \bmod A)\),与 \(y = (t \bmod B)\)。这里 \(\lfloor x\rfloor\) 是下取整函数,表示小于或等于 \(x\) 的最大整数。

考古学家通过进一步研究还发现,该装置的屏幕无法一直工作。实际上,该装置的屏幕只在 \(n\) 个连续的时间区间段中能正常工作。第 \(i\) 个时间段从时刻 \(l_i\) 到时刻 \(r_i\)。现在科学家想要知道有多少个不同的数对 \((x, y)\) 能够在该装置工作时被显示出来。

两个数对 \((x_1, y_1)\) 和 \((x_2, y_2)\) 不同当且仅当 \(x_1 \not = x_2\) 或 \(y_1 \not = y_2\)。

输入格式

第一行包含三个整数 \(n, A\) 与 \(B\)。

接下来 \(n\) 行每行两个整数 \(l_i, r_i\),表示装置可以工作的第 \(i\) 个时间区间。

输出格式

输出一行一个整数表示问题的答案。

数据范围与提示

对于全部数据,\(1\le n\le 10^6,1\le A,B\le 10^{18},0\le l_i\le r_i\le 10^{18},r_i<l_{i+1}\)。

首先这玩意肯定是有环的。找到过后将所有线段平移到环内就可以直接做线段覆盖。

对于一个数\(t\),首先跟他同构的数可以表示为\(t+k*B\),因为要保证\(y\)相同。然后\(t\)每增加\(B\),\(x\)就增加\(B+1\),增加了\(\frac{A}{\gcd(A,B+1)}\)后有会同构。所以环大小\(\frac{B*A}{\gcd(A,B+1)}\)。

代码:

#include<bits/stdc++.h>
#define ll long long
#define N 1000005using namespace std;
inline ll Get() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}int n;
ll A,B,len;
struct node {ll l,r;bool operator <(const node &a)const {if(l!=a.l) return l<a.l;return r<a.r;}
}s[N<<1];
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);}int main() {n=Get(),A=Get(),B=Get();for(int i=1;i<=n;i++) s[i].l=Get(),s[i].r=Get();ll g=gcd(A,B+1);ll ans=0;if((long double)A/g*B>1e18) {for(int i=1;i<=n;i++) ans+=s[i].r-s[i].l+1;} else {ll len=A/g*B;int tot=n;for(int i=1;i<=n;i++) {if(s[i].r-s[i].l+1>=len) {cout<<len;return 0;}s[i].l%=len,s[i].r%=len;if(s[i].l>s[i].r) {s[++tot].l=0,s[tot].r=s[i].r;s[i].r=len-1;}}sort(s+1,s+1+tot);ll last=-1;for(int i=1;i<=tot;i++) {if(s[i].r<last) continue ;ans+=s[i].r-max(s[i].l-1,last);last=s[i].r;}}cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/hchhch233/p/11096863.html

#3144. 「APIO 2019」奇怪装置相关推荐

  1. 「APIO 2019」奇怪装置

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

  2. LOJ#3054. 「HNOI 2019」鱼

    LOJ#3054. 「HNOI 2019」鱼 https://loj.ac/problem/3054 题意 平面上有n个点,问能组成几个六个点的鱼.(n<=1000) 分析 鱼题,劲啊. 容易想 ...

  3. 「BJOI 2019」排兵布阵

    传送门 problem 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 aia_iai​ 名士 ...

  4. 「BJOI 2019」勘破神机

    传送门 problem 经过了一个月的艰苦尝试,你的研究团队破译了 "2""2""2" 型奥术宝石和 "3"" ...

  5. 「BJOI 2019」奥术神杖

    传送门 problem 神杖上从左到右镶嵌了 n n n 颗奥术宝石,奥术宝石一共有 10 10 10 种,用数字 " 0123456789 " "0123456789& ...

  6. 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)

    传送门 首先显然k=lognk=lognk=logn 显然对于每个iii我们只用关注有多少位与询问的数字不同 考虑分成两个部分 先对每个数字iii求出与他有jjj位不同的数字价值之和 再求出ttt轮后 ...

  7. 「CSP-S 2019」 Emiya 家今天的饭 题解

    题面 样例 2 3 1 0 1 0 1 1 3 分析 考虑正着限制最大的数不超过一半不好做,那我们可以反着来. 令 dp[i][j][k]dp[i][j][k]dp[i][j][k] 为第 iii 行 ...

  8. LOJ #6672. 「XXOI 2019」惠和惠惠和惠惠惠(生成函数,整式递推)

    题目 没有latex就没有推式子的动力怎么破? 设 f i , j f_{i,j} fi,j​表示在前 j j j个回合里,血量为 0 0 0了 i i i个回合且第 j j j个回合血量为 0 0 ...

  9. 编写脚本、篡改数据,90后百度程序员「挣外快」被判刑!

    [导读]百度一名92年的程序员,为了「挣点外快」,通过编写脚本.篡改数据等方式,在半年左右违规通过了735个媒体网站账号加入「百度联盟」的申请,使得公司损失 374 万元广告分成.然而,「破坏计算机信 ...

最新文章

  1. Character流与Byte流的区别
  2. MIT有个做披萨的GAN,登上了CVPR:加香肠、去橄榄、再烤熟,分层才是王道
  3. c++全局类对象_史上最全 Python 面向对象编程
  4. Jenkins中连接Git仓库时提示:无法连接仓库:Error performing git command: git ls-remote -h
  5. 数据结构之线性存储结构
  6. spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建
  7. 【当头棒喝】你是真的了解云计算吗?
  8. Java中的equals和==的差别 以及Java中等价性和同一性的讨论
  9. instagram图片大小_一个开源的Instagram桌面照片上传器
  10. 基础知识—数据类型-数据的输出与输入
  11. 操作高通QXDM5,点击重置按钮出现报错
  12. (1.6w字)浏览器灵魂之问,请问你能接得住几个?
  13. 使用金蝶云星空(以前叫:金蝶K3 CLOUD)后,感觉像踩进了一个坑
  14. jzoj 3457. 【NOIP2013模拟联考3】沙耶的玩偶(doll) (Standard IO)
  15. 登出系统gif图标_来了!深度操作系统 20正式版——崭新视界,创无止境
  16. Python实现聊天机器人
  17. 软件工程第五章——总体设计
  18. snprintf()函数探讨
  19. 如何退出python命令行
  20. Windows安装TensorFlow教程(国内源安装附上各大镜像网站网址)

热门文章

  1. PHP 自定义二维码生成
  2. 装完nvme固态经常蓝屏_Win10 KB4586853修复NVMe SSD导致蓝屏死机问题
  3. numactl mysql_mysqld_multi多实例及numactl资源绑定
  4. 自我总结:Centos7-Minimal安装后应该干什么
  5. CSS特性 之渐变 (全网最全)
  6. Mac 下投屏软件Vysor安装及破解
  7. 我对无人机重心高度的理解
  8. 【机器学习】Huber loss
  9. 一个对dispatch_group的改进:TaskHarmonizer
  10. iwatch怎么用计算机,iWatch爱看评测 操作与功能