大约是翻译了一下官方题解?

@Description@

对于一个整数序列 \(P=(P_{1},\dots,P_{m})\),定义 \(f(P)\) 为一个序列 \(Q\) 满足:

  • \(Q_{i}=P_{i}+P_{i+1}\),其中 \(i\in[1,m)\);
  • \(f(P)=(P_{1},Q_{1},\dots,P_{m-1},Q_{m-1},P_{m})\)。

给出正整数 \(a,b,N\),其中 \(a,b\leqslant N\),令序列 \(A=(a,b)\),令序列 \(B\) 为一下操作的结果:

  • 做 \(N\) 次令 \(A=f(A)\).
  • 删除 \(A\) 中大于 \(B\) 的数。

求 \(B_{l,\dots r}\)。

@Solution@

◆ The Coefficient Sequence

构造最终的 \(A\) 序列的过程是这样的:

\[a,b \\
a,a+b,b \\
a,2a+b,a+b,a+2b,b \\
a,3a+b,2a+b,3a+2b,a+b,2a+3b,a+2b,a+3b,b \\
\dots
\]

可以发现有对称性。此时我们先不关心 \(a,b\) 以及 \(N\) 的大小,反之,我们来观察其序列系数,也就是把每个元素看成 \(xa+yb\),其系数的 \((x,y)\),上例的序列系数即

\[(1,0),(0,1) \\
(1,0),(1,1),(0,1) \\
(1,0),(2,1),(1,1),(1,2),(0,1) \\
(1,0),(3,1),(2,1),(3,2),(1,1),(2,3),(1,2),(1,3),(0,1) \\
\dots
\]

以下我们称其为 Coefficient Sequence

◆ The properties of the Coefficient Sequence

现在我们来观察 Coefficient Sequence 的性质。

Observation 1:在 Coefficient Sequence 中相邻的两个二元组 \((x_{S},y_{S}),(x_{T},y_{T})\),都有: \(x_{S}y_{T}-x_{T}y_{S}=1\)。

使用数学归纳法(induction)即证。

Observation 2:对于两个 两个二元组 \((x_{S},y_{S}),(x_{T},y_{T})\),如果他们满足 \(x_{S}y_{T}-x_{T}y_{S}=1\),那么它们在 Coefficient Sequence 中相邻,即 Observation 1 是充要条件

不会证,大概意会一下吧。

Observation 3:对于一个二元组 \((x,y)\),如果 \(\gcd(x,y)=1\),那么 \((x,y)\) 会出现在 Coefficient Sequence 中。

比较显然,以至于官方题解没有给出证明。

Observation 4:在任意时刻,所有在 Coefficient Sequence 中的 \((x,y)\) 总是呈从左到右的关于值 \(\frac{y}{x}\) 递增(令 \(\frac{x}{0}=\infty\))。

◆ The sequence \(B\) in other words

现在描述序列 \(B\) 变得更加容易,现在我们这样描述它:

对于所有二元组 \((x,y)\) 满足 \(x,y,s.t.x,y\in\mathbb{N},\gcd(x,y)=1,ax+by\leqslant N\),我们对其按 \(\frac{y}{x}\) 排序后形成一个二元组序列 \(\{(x_{i},y_{i})\}\),则 \(B_{i}=ax_{i}+by_{i}\)。

◆ Computing \(B_{n}\)

现在我们来考虑原问题的简化版,我们来计算 \(B_{n}\)。让我们把这个描述成一个计数问题(通过二分 \(\frac{y}{x}\)):

给定正整数 \(a,b,N\),以及一个有理数 \(c\)(二分的值),求二元组 \((x,y)\neq(0,0)\) 的数量,其中 \((x,y)\) 满足

  • \(ax+by\leqslant N\);
  • \(\gcd(x,y)=1\);
  • \(\frac{y}{x}\leqslant c\)。

我们令 \(F(N)\) 为以上问题的答案,同时令 \(G(N)\) 为去掉 \(\gcd(x,y)=1\) 限制的答案。\(G(N)\) 的式子可以很方便的写出来: \(G(N)=\sum_{y=1}^{N}\max\{\lfloor\frac{N-by}{a}\rfloor-\lfloor\frac{y}{c}\rfloor+1,0\}\),同时我们还可以写出 \(G(N)=\sum_{d=1}^{N}F(\lfloor\frac{N}{d}\rfloor)\)。那么再根据 Möbius inversion formula,我们可以表示出 \(F(N)=\sum_{d=1}^{N}\mu(d)G(\lfloor\frac{N}{d}\rfloor)\)。于是计算该问题答案的复杂度就是 \(\mathcal{O}(N)\)。

但是此时我们知道了 \(B_{n}\) 的 \(\frac{y_{n}}{x_{n}}\),怎么知道 \((x_{n},y_{n})\) 呢?我们可以再做一个二分。观察出这样一个规律:若令 \(l=(1,0),r=(0,1)\),那么中间位置就是 \(l+r\)。于是我们可以再次做一个二分,利用 \(\frac{y}{x}\) 单调来做 check。

顺带一提,这个还可以使用 类欧几里得 来计算。

◆ Computing \(B_{l,\dots,r}\)

可以发现这个东西可以知二求一,于是求出 \(B_{l},B_{l+1}\) 就行了。当然也可以求出 \(B_{l},B_{r}\) 然后做二分搜索。

Solution -「ARC 123F」Insert Addition的更多相关文章

  1. Solution -「ARC 104E」Random LIS

    \(\mathcal{Description}\)   Link.   给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...

  2. Solution -「ARC 126E」Infinite Operations

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\),定义一次操作为: 选择 \(a_i<a_j\),以及一个 \(x\in\mathbb R ...

  3. Solution -「ARC 101D」「AT4353」Robots and Exits

    \(\mathcal{Description}\)   Link.   有 \(n\) 个小球,坐标为 \(x_{1..n}\):还有 \(m\) 个洞,坐标为 \(y_{1..m}\),保证上述坐标 ...

  4. Solution -「ARC 110D」Binomial Coefficient is Fun

    \(\mathcal{Description}\)   Link.   给定非负整数序列 \(\{a_n\}\),设 \(\{b_n\}\) 是一个非负整数序列且 \(\sum_{i=1}^nb_i\ ...

  5. Solution -「ARC 124E」Pass to Next

    \(\mathcal{Description}\)   Link.   有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...

  6. Solution -「ARC 126F」Affine Sort

    \(\mathcal{Description}\)   Link.   给定 \(\{x_n\}\),令 \[f(k)=\left|\{(a,b,c)\mid a,b\in[0,c),c\in[1,k ...

  7. Solution -「ARC 125F」Tree Degree Subset Sum

    \(\mathcal{Description}\)   Link.   给定含有 \(n\) 个结点的树,求非负整数对 \((x,y)\) 的数量,满足存在 \(\exist S\subseteq V ...

  8. Solution -「ARC 125E」Snack

    \(\mathcal{Description}\)   Link.   把 \(n\) 种零食分给 \(m\) 个人,第 \(i\) 种零食有 \(a_i\) 个:第 \(i\) 个人得到同种零食数量 ...

  9. Solution -「ARC 058C」「AT 1975」Iroha and Haiku

    \(\mathcal{Description}\)   Link.   称一个正整数序列为"俳(pái)句",当且仅当序列中存在连续一段和为 \(x\),紧接着连续一段和为 \(y ...

  10. Solution -「ARC 101E」「AT 4352」Ribbons on Tree

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个点的树,其中 \(2|n\),你需要把这些点两两配对,并把每对点间的路径染色.求使得所有边被染色的方案数 ...

随机推荐

  1. Java(数组使用、Arrays、稀疏数组)

    1.数组的使用 For-Each循环 int[] arrays = {1,2,3,4,5}; //打印全部的数组元素 JDK1.5 没有下标 for (int array : arrays) { Sy ...

  2. 数据科学工具 Jupyter Notebook 教程(二)

    Jupyter Notebook 是一个把代码.图像.注释.公式和作图集于一处,实现可读性分析的交互式笔记本工具.借助所谓的内核(Kernel)的概念,Jupyter Notebook 可以同时支持包 ...

  3. 关于VS2022使用EF生成实体模型报错的问题:运行转换:System.NullReferenceException:对象引用未设置为对象的示例。

    起因: 之前版本vs2022生成EF模型一直没有问题,在更新了最新的vs2022之后,版本号17.6+,出现此问题: 运行转换:System.NullReferenceException:对象引用未设 ...

  4. .NET7 for LoongArch64(国产龙芯)

    目前龙芯通过自己的指令集LA64支持了.Net7.0.1版本,一同被支持的有Ruby,Nodejs,Java,Electron,Python等.原文:在此处 龙芯.Net7 sdk下载地址: http ...

  5. SQL Sever 各版本的适用环境

    很多用visual studio做开发的朋友经常会用到sqlserver数据库,但是往往在选择的时候就不知道该使用哪个版本了,今天就给大家分享一下sqlserver各个版本之间的区别,以及各个版本之间 ...

  6. Spring Boot集成Dubbo 3.X

    关注王有志,一个分享硬核Java技术的互金摸鱼侠 欢迎加入Java人的提桶跑路群:共同富裕的Java人 上一篇我们一起认识了Dubbo与RPC,今天我们就来一起学习如何使用Dubbo,并将Dubbo集 ...

  7. 【线上技术分享】即构&MobTech袤博移动游戏开发者全能进阶沙龙

    游戏行业的兴起与当前移动互联网用户碎片化.休闲化的生活特征密不可分,在用户旺盛的需求下,游戏行业迎来了绝佳的发展机遇,今年上半年已多款游戏DAU过亿. 市场的火爆也为游戏行业带来了异常激烈的竞争,加上 ...

  8. 国产化之x64平台安装银河麒麟操作系统

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟v4,CPU使用飞腾处理器.飞腾处理器是ARMv8架构的,在之前的文章中介绍了使用QEMU模拟ARMv8架构安装银河麒麟操作系统的方式 ...

  9. Cilium系列-11-启用带宽管理器

    系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...

  10. Go 语言入门指南: 环境搭建、基础语法和常用特性解析 | 青训营

    Go 语言入门指南: 环境搭建.基础语法和常用特性解析 | 青训营 从零开始 Go 语言简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert ...