APIO2019 题解
APIO2019 题解
T1 奇怪装置
题目传送门
题解
很容易发现,这个东西一定会形成一个环。我们只需要求出环的长度就解决了一切问题。
设环的长度为 \(l\)。那么从 \((0, 0)\) 出发,走 \(l\) 步一定可以再次回到 \((0, 0)\)。
也就是说
\[
\left\{
\begin{align*}
& A \mid l + \lfloor \frac lB \rfloor\\
& B \mid l
\end{align*}
\right.
\]
所以 \(\lfloor \frac lB \rfloor = \frac lB\)。因此设 \(x = \frac lB\),则 \(l = xB\),则 \(A \mid x(B + 1)\)。
所以 \(x = \frac{\operatorname{lcm}(A, B + 1)}{A(B + 1)}\),\(l = xB = \frac{\operatorname{lcm}(A, B + 1)B}{A(B + 1)}\)。
有了 \(l\) 之后就是求区间的并的大小了。这个东西可以直接排序一遍就可以了。
代码
https://loj.ac/submission/688026
T2 桥梁
题目传送门
题解
先考虑这样一种做法:
首先如果我们暴力把当前的所有点权大于等于 \(w_j\) 的边加入并查集,那么这次询问的答案就是 \(s_j\) 所在并查集的大小。
这样是 \(O(Qm)\) 的。
想要把这个暴力改的稍微优雅一点可以这样:
先找出所有没有被修改过的边加入并查集。
对于每一次询问,枚举所有修改,对于在它之前最后一次修改这条边的一次修改,如果修改后的权值大于等于 \(w_j\) 就加入并查集。这里的并查集需要回退。
这样的时间复杂度变成了 \(O(m\log m + Q^2\log m)\)。
我们发现,这样做涉及到的边只有询问的边。我们是不是可以每隔几次询问就暴力重构一遍来保证目前没有被重构的询问尽量少呢?这样做可以看成把询问分成很多块。
如果采用这样的策略,那么我们每一次询问只需要遍历这一块内的修改即可。
那么这样的时间复杂度就是 \(O(\frac{Qm\log m}B + QB)\)。
当 \(B = \sqrt{m\log m}\) 时最优。
这样的时间复杂度就是 \(O(Q\sqrt{m\log m})\)。
代码
https://loj.ac/submission/688889
T3 路灯
题目传送门
题解
对于每个点 \(x\) 维护其所在段的右边界 \(r_x\)。那么从 \(a\) 能够到达 \(b\) 当且仅当 \(r_a \geq b\)。
可以用树套树维护 \(r_i\)。对于一次 toggle
操作,不管是点亮还是熄灭,影响到的 \(r_i\) 都只有这个区间的修改点 \(x\) 左边的部分,内容是把它们的 \(r\) 修改成 \(x\) 或者从 \(x\) 修改成一个更大的。
同时,可以发现,一个路段在 \(i\) 时刻通了,那么它可以带来贡献 \(q - i\) 的时间。如果在 \(j\) 时刻断了,那么它带来了 \(q - i\) 的负贡献。我们只需要维护这个这个东西就可以了。
所以树套树的第一维是 \(i\),第二维是 \(r_i\),存储的是 \(r_i\) 变成 \(j\) 的贡献。但是需要特判的是,如果查询的时候路段处于联通状态,那么需要从总贡献中扣除 \(q - now\)。
听说还可以用 cdq 分治维护,应该也是差不多的做法了。
代码
https://loj.ac/submission/688370
APIO2019 题解的更多相关文章
- APIO2019题解
T1.桥梁(bridges/restriction) Subtask1:暴力,$O(n^2)$. #include<cstdio> #include<algorithm> #d ...
- APIO2019简要题解
Luogu P5444 [APIO2019]奇怪装置 看到这种题,我们肯定会想到\((x,y)\)一定有循环 我们要找到循环节的长度 推一下发现\(x\)的循环节长为\(\frac{AB}{B+1}\ ...
- 题解-APIO2019路灯
problem \(\mathtt {loj-3146}\) 题意概要:一条直线上有 \(n+1\) 个点和 \(n\) 条道路,每条道路连通相邻两个点.在 \(q\) 个时刻内,每个时刻有如下两种操 ...
- 题解-APIO2019桥梁
problem \(\mathrm {loj-3145}\) 题意概要:给定一张 \(n\) 点 \(m\) 边的无向图,边有边权,共 \(q\) 次操作,每次会将第 \(x\) 条边的权值改为 \( ...
- 题解-APIO2019奇怪装置
problem loj-3144 题意概要:设函数 \(f(t)\) 的返回值为一个二元组,即 \(f(t)=((t+\lfloor \frac tB\rfloor)\bmod A, t\bmod B ...
- 题解 洛谷 P5443 【[APIO2019]桥梁】
考虑若只有查询操作,那么就可以构造\(Kruskal\)重构树,然后在线询问了,也可以更简单的把询问离线,把询问和边都按权值从大到小排序,然后双指针依次加入对于当前询问合法的边,用并查集维护每个点的答 ...
- 【LOJ#3146】[APIO2019]路灯(树套树)
[LOJ#3146][APIO2019]路灯(树套树) 题面 LOJ 题解 考场上因为\(\text{bridge}\)某个\(\text{subtask}\)没有判\(n=1\)的情况导致我卡了\( ...
- 【LOJ#3145】[APIO2019]桥梁(分块,并查集)
[LOJ#3145][APIO2019]桥梁(分块,并查集) 题面 LOJ 题解 因为某个\(\text{subtask}\)没判\(n=1\)的情况导致我自闭了很久的题目... 如果没有修改操作,可 ...
- 【LOJ#3144】[APIO2019]奇怪装置(数论)
[LOJ#3144][APIO2019]奇怪装置(数论) 题面 LOJ 题解 突然发现\(LOJ\)上有\(APIO\)的题啦,赶快来做一做. 这题是窝考场上切了的题嗷.写完暴力之后再推了推就推出正解 ...
随机推荐
- oracle之VARCHAR2(50 CHAR) 和VARCHAR2(50) 区别?
首先要明白的是:根据字符集不同,varchar2(50)这样在gbk可存25个汉字,utf8可存16个汉字 这里的50相当于50BYTE,是按字节计数,50CHAR是按字符计数. 对于多字节字符( ...
- container_of宏解析 && 为什么需要使用中间变量__mptr?
#define container_of(ptr, type, member) ({ \ )->member ) *__mptr = (ptr); \ (type *)( (char *)__m ...
- QT Desinger设计窗体应用程序框架
目录 目录 前言 系统软件 QT Designer Using QT Designer Open QTDesigner Tool Widget Box QT Designer的布局 属性栏 示例 i ...
- Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它
Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...
- 移动端自动化==>什么是Appium
转自:http://www.imdsx.cn/ 手机App分为两大类,原生App(Native App)和混合APP(Hybrid App) 原生App(Native App) 原生App实际就是我们 ...
- linux防火墙iptables简单介绍
--append -A chain Append to chain --delete -D chain Delete matching rule from chain ...
- 如何保存不连着电脑跑monkey?如何跑多个APK的monkey?
哈喽,大家有没有遇到用真机跑monkey的时候,跑到一半结果小手一抖不小心把线碰掉了,结果报告就没获取到啦~ 今天就来解决这个问题 1.如何保存不连着电脑跑monkey? 1).输入命令进入shell ...
- 梳理检测论文-Refinement Neural Network
Single-Shot Refinement Neural Network for Object Detection 目录 1. motivation 2. RefineDet 解析(Network ...
- 问题记录 | deepin15.10重装nvidia驱动及cuda
问题描述: nvidia-smi也有显示,显卡驱动是在的,而且nvcc显示出来的cuda版本9.0也没错,不是9.1.不知道问题所在,索性重装全部. sudo tee /proc/acpi/bbswi ...
- python 并发编程 多进程 Process对象的其他属性方法 terminate与is_alive name pid 函数
进程对象的其他方法一: terminate与is_alive is_alive() 立刻查看的子进程结果 是否存活 from multiprocessing import Process impor ...