洛谷$P5444\ [APIO2019]$奇怪装置 数论
正解:数论
解题报告:
我好像当初考的时候这题爆零了,,,部分分都没想到,,,我真的好菜$kk$
考虑如果在$t_1,t_2$两个时刻有$x_1=x_2,y_1=y_2$是什么情况$QwQ$?
那就有$\begin{cases}t_1+[\frac{t_1}{B}]\equiv t_2+[\frac{t_2}{B}](\mod A)\\t_1\equiv t_2(\mod B)\end{cases}$.
不妨设$t_2=t_1+B\cdot t$,代入得$t_1+[\frac{t_1}{B}]\equiv t_1+B\cdot k+[\frac{t_1+B\cdot k}{B}](\mod A)$,即$k(B+1)\equiv 0(\mod A)$
解得$\frac{A}{gcd(A,B+1)}|k$.即将$mod\ B$相等的提出来,发现每$\frac{A}{gcd(A,B+1)}$一循环.又因为$mod\ B$的结果有$B$个,所以总的循环节长度为$len=\frac{A\cdot B}{gcd(A,B+1)}$.
所以把$l,r$取模后变成若干条线段,然后现在询问$[0,len)$覆盖了多少个点.昂这个不差分下就行了嘛,$over$
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define fi first
#define sc second
#define ll long long
#define gc getchar()
#define mp make_pair
#define P pair<ll,ll>
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ll i=x;i<=y;++i)
#define my(i,x,y) for(ll i=x;i>=y;--i) const int N=1e6+;
const ll inf=1e18;
ll n,A,B,len,l[N],r[N],sum,dat,lst,as;
multiset<P>S; il ll read()
{
rc ch=gc;ll x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
il void ad(ll x,ll y){S.insert(mp(x,-));S.insert(mp(y,));} int main()
{
//freopen("5444.in","r",stdin);freopen("5444.out","w",stdout);
n=read();A=read();B=read();len=A/gcd(A,B+)*B;rp(i,,n){l[i]=read(),r[i]=read();sum+=r[i]-l[i]+;}
if(A/gcd(A,B+)>inf/B)return printf("%lld\n",sum),;
rp(i,,n)
{
if(r[i]-l[i]>=len)return printf("%lld\n",len),;;//printf("l=%lld r=%lld len=%lld\n",r[i],l[i],len);
if(l[i]/len!=r[i]/len)ad(l[i]%len,len-),ad(,r[i]%len);else ad(l[i]%len,r[i]%len);
}
multiset<P>::iterator it=S.begin();
while(it!=S.end()){P tmp=*it;if(!dat)lst=tmp.fi;dat-=tmp.sc;if(!dat)as+=tmp.fi-lst+;++it;}
printf("%lld\n",as);
return ;
}
洛谷$P5444\ [APIO2019]$奇怪装置 数论的更多相关文章
- Luogu P5444 [APIO2019]奇怪装置
题目 这种题目看上去就是有循环节的对吧. 在考场上,一个可行的方式是打表. 现在我们手推一下这个循环节. 记函数\(f(t)=(((t+\lfloor\frac tB\rfloor)\%A),(t\% ...
- P5444 [APIO2019]奇怪装置
传送门 考虑求出最小的循环节 $G$ 使得 $t,t+G$ 得到的数对是一样的 由 $y \equiv t \mod B$ ,得到 $G$ 一定是 $B$ 的倍数,设 $zB=G$,则 $t,t+zB ...
- 【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 ...
- #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} ...
- 洛谷P4495 [HAOI2018]奇怪的背包(数论)
题面 传送门 题解 好神仙的思路啊--orzyyb 因为不限次数,所以一个体积为\(V_i\)的物品可以表示出所有重量为\(\gcd(V_i,P)\)的倍数的物品,而所有物品的总和就是这些所有的\(\ ...
- [APIO2019T1]奇怪装置
考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数x和y.经过研究,科学家对该装置得出了一个结论:该装置是一个特殊的时钟,它从过去的某个时间点开始测量经过的时刻数t,但该装 ...
- 洛谷 P1135 【奇怪的电梯】
题库 :洛谷 题号 :1135 题目 :奇怪的电梯 link :https://www.luogu.org/problemnew/show/P1135 一. 动态规划 : 思路 :这道题用动规来解决其 ...
随机推荐
- Python基础:23异常
一:概述 1:错误 错误有语法和逻辑上的区别.语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译.这些错误必须在程序执行前纠正.逻辑错误可能是由于不完整或是不合法的输入所致,还可能是 ...
- @codeforces - 913F@ Strongly Connected Tournament
目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个选手参加了一场竞赛,这场竞赛的规则如下: 1.一开始,所有 ...
- thinkphp3.2配置redis缓存和文件缓存
如果把一些常用但又不容易变的数据存缓存,而不是每次查数据库,这样能很大减轻数据库压力 最近由于项目需要,就尝试了一把redis,但是后面又用了tp3.2的文件缓存,直接进入主题: 在config.ph ...
- java+内存分配及变量存储位置的区别
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...
- JavaScript 数组去重和对象相等判断
前几天电话面试问到了数组去重和两个对象相等判断,当时回答的不是特别好,都过去好几天了,总结下. 1.数组去重 当时的问题是这样的有个简单的数组[1,1,2,3],去重后的结果是[1,2,3],怎么实现 ...
- 【原生JS】滑动门效果
效果图: 思路:通过每次鼠标移动至目标上使所有图片重置为初始样式再向左移动目标及其左侧每个图片隐藏部分距离即实现. HTML: <!DOCTYPE html> <html> & ...
- Ubuntu16.04.3深度学习环境搭建
依赖 pip3 install pillow 安装numpy相关sudo apt-get install python-numpy python-scipy python-matplotlib ipy ...
- 2018-8-10-win10-uwp-调试软件启动
title author date CreateTime categories win10 uwp 调试软件启动 lindexi 2018-08-10 19:16:51 +0800 2018-03-0 ...
- CodeForces 242E "XOR on Segment"(线段树)
传送门 •题意 给你一个包含 n 个数的序列 a,定义序列上的两个操作: (1)$1,l,r\ :\ ans=\sum_{i=l}^{r}a_i$; (2)$2,l,r,x\ :\ \forall\ ...
- 高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案
(1)问题产生:使用500个线程并发下载tomcat工程中的一个文件时,服务器出现java.net.SocketException: Connection reset异常, 客户端出现connect ...