P5444 [APIO2019]奇怪装置
考虑求出最小的循环节 $G$ 使得 $t,t+G$ 得到的数对是一样的
由 $y \equiv t \mod B$ ,得到 $G$ 一定是 $B$ 的倍数,设 $zB=G$,则 $t,t+zB$ 结果相同
代入 $x \equiv (t+\left \lfloor \frac{t}{B} \right \rfloor) \mod A$
得到
$(t+zB+\left \lfloor \frac{t+zB}{B} \right \rfloor) \equiv (t+\left \lfloor \frac{t}{B} \right \rfloor) \mod A$
$(t+zB+z+\left \lfloor \frac{t}{B} \right \rfloor) \equiv (t+\left \lfloor \frac{t}{B} \right \rfloor) \mod A$
$(zB+z) \equiv 0 \mod A$
$z(B+1) \equiv 0 \mod A$
即 $z(B+1)$ 是 $A$ 的倍数
想得到最小的 $G$ 就要先求出最小的 $z$,考虑两边提出公因数 $\gcd(A,B+1)$
那么 $z(B+1)/\gcd(A,B+1) = kA/\gcd(A,B+1) $
此时因为 $(B+1)/\gcd(A,B+1)$ 已经和 $A/\gcd(A,B+1)$ 没有公因数了
那么 $z$ 一定得是 $A/\gcd(A,B+1)$ 的倍数,那么最小的 $z$ 就是当 $k=1$ 时, $z=A/\gcd(A,B+1)$
所以 $G=zB=AB/gcd(A,B+1)$
那么对于一个时间段 $l,r$ ,如果 $r-l+1>=G$ 则所有数都会被覆盖到,答案就是 $G$
否则把 $l,r$ 对 $G$ 取模,因为此时 $r-l+1<G$,所以取模后如果 $l<=r$ 则 $l,r$ 区间的数会被考虑到
如果 $l>r$ 则 $[0,r]$ 和 $[l,G-1]$ 的数会被覆盖到,直接离散化看看哪些区间被覆盖到就好了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=4e6+;
ll n,A,B,ans;
ll gcd(ll a,ll b) { return b ? gcd(b,a%b) : a; }
struct dat{
ll pos,v;
inline bool operator < (const dat &tmp) const {
return pos!=tmp.pos ? pos<tmp.pos : v>tmp.v;
}
}d[N];
ll tot;
int main()
{
n=read(),A=read(),B=read();
ll G=A/gcd(A,B+)*B,l,r;//注意先除后乘
while(n--)
{
l=read(),r=read();
if(r-l+>=G) { printf("%lld\n",G); return ; }
l=l%G,r=r%G;
if(l<=r) d[++tot]=(dat){l,},d[++tot]=(dat){r,-};
else d[++tot]=(dat){,},d[++tot]=(dat){r,-},d[++tot]=(dat){l,},d[++tot]=(dat){G-,-};
}
sort(d+,d+tot+); int now=; ll pre;
for(int i=;i<=tot;i++)
{
if(d[i].v&&!now) pre=d[i].pos;//如果覆盖开始则记录左端点
now+=d[i].v;
if(!now) ans+=d[i].pos-pre+;//覆盖结束统计答案
}
printf("%lld\n",ans);
return ;
}
P5444 [APIO2019]奇怪装置的更多相关文章
- Luogu P5444 [APIO2019]奇怪装置
题目 这种题目看上去就是有循环节的对吧. 在考场上,一个可行的方式是打表. 现在我们手推一下这个循环节. 记函数\(f(t)=(((t+\lfloor\frac tB\rfloor)\%A),(t\% ...
- 洛谷$P5444\ [APIO2019]$奇怪装置 数论
正解:数论 解题报告: 传送门$QwQ$ 我好像当初考的时候这题爆零了,,,部分分都没想到,,,我真的好菜$kk$ 考虑如果在$t_1,t_2$两个时刻有$x_1=x_2,y_1=y_2$是什么情况$ ...
- 【LOJ#3144】[APIO2019]奇怪装置(数论)
[LOJ#3144][APIO2019]奇怪装置(数论) 题面 LOJ 题解 突然发现\(LOJ\)上有\(APIO\)的题啦,赶快来做一做. 这题是窝考场上切了的题嗷.写完暴力之后再推了推就推出正解 ...
- 【LG5444】[APIO2019]奇怪装置
[LG5444][APIO2019]奇怪装置 题面 洛谷 题目大意: 给定\(A,B\),对于\(\forall t\in \mathbb N\),有二元组\((x,y)=((t+\lfloor\fr ...
- 题解-APIO2019奇怪装置
problem loj-3144 题意概要:设函数 \(f(t)\) 的返回值为一个二元组,即 \(f(t)=((t+\lfloor \frac tB\rfloor)\bmod A, t\bmod B ...
- [APIO2019] 奇怪装置
$solution:$ 问题其实就是求两个式子的循环节. 钦定 $t\mod B=0$且 $(t\neq 0)$,其 $t$ 为循环节. 则将 $1$ 式拆开得 $\frac{t\times (B+1 ...
- #3144. 「APIO 2019」奇怪装置
#3144. 「APIO 2019」奇怪装置 题目描述 考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\). 经过研究,科学家对该装置得出了一个 ...
- [APIO 2010] [LOJ 3144] 奇怪装置 (数学)
[APIO 2010] [LOJ 3144] 奇怪装置 (数学) 题面 略 分析 考虑t1,t2时刻坐标相同的条件 \[\begin{cases} t_1+\lfloor \frac{t_1}{B} ...
- [APIO2019T1]奇怪装置
考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数x和y.经过研究,科学家对该装置得出了一个结论:该装置是一个特殊的时钟,它从过去的某个时间点开始测量经过的时刻数t,但该装 ...
随机推荐
- 半小时写完替罪羊重构点分树做动态动态点分治之紫荆花之恋的wyy贴心指导
刷题训练 初学者 有一定语言基础,但是不了解算法竞赛,水平在联赛一等奖以下的. 参考书:<算法竞赛入门经典--刘汝佳>,<算法竞赛入门经典训练指南--刘汝佳> 题库:洛谷(历年 ...
- 理解厂商前缀 -webkit- / -moz- / -ms- / -o-
CSS3规范如果想要达到W3C的推荐标准状态还需要不断改进.浏览器则通常在W3C开发标准的过程中就会体现这些特性.这样,标准在最终敲定之前就能知道哪些地方还能进一步改进. 在包含某个特性的的初始阶段, ...
- JDK7的新特性
本篇博客的内容 一.二进制字面量 二.数字字面量可以出现下划线 三.switch 语句可以用字符串 四.泛型简化 五.异常的多个catch合并 六.try-with-resources 语句 一.二进 ...
- 转载--C 的回归
转载自http://blog.codingnow.com/2007/09/c_vs_cplusplus.html 周末出差,去另一个城市给公司的一个项目解决点问题.回程去机场的路上,我用手机上 goo ...
- 解决异常信息 Caused by: java.lang.IllegalArgumentException: invalid comparison: java.lang.String and java.util.Date
原来的xml文件 <if test="null != endDate and '' != endDate"> AND rr.REG_DATE <= #{endDa ...
- 如何实现echarts组织结构图节点的收缩
echarts本身没有组织结构图的节点收缩功能,因为项目需求要用到此功能. 引入的echarts必须是2版本的,因为3.0取消了对组织结构图的支持.下载2版本的源码,找到关于onclick事件那部分的 ...
- 500 cannot be cast to javax.xml.registry.infomodel
在使用mybatis的时候每次一调用一个返回User类型的sql时,总是会报错如下: com.xx.all.domain.User cannot be cast to javax.xml.regist ...
- 使用ZeroTier搭建大局域网利用VNC远程桌面
ZeroTier One.msi VNC Server 6.4.1 VNC Viewer 6.19.325 Network ID 83048a0632e88e16
- VUE Right-hand side of ‘instanceof’ is not an object 解决方案
这里要注意一下, props之前没注意写成了 props: { wrd: '', sname:'zs' }, 这样是不能被解析成object的,所以一定要写的更具体一点 ...
- 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式
一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...