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

@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. RabbitMQ快速使用代码手册

    本篇博客的内容为RabbitMQ在开发过程中的快速上手使用,侧重于代码部分,几乎没有相关概念的介绍,相关概念请参考以下csdn博客,两篇都是我找的精华帖,供大家学习.本篇博客也持续更新~~~ 内容代码 ...

  2. @Inherited元注解的使用

    @Inherited注解标记其他的注解用于指明标记的注解是可以被自动继承的. 注意:此注解只对注解标记的超类有效,对接口是无效的. 示例: 先声明两个用@Inherited标记的注解,@Name和@A ...

  3. 一文了解Go语言的函数

    1. 引言 函数是编程中不可或缺的组成部分,无论是在Go语言还是其他编程语言中,函数都扮演着重要的角色.函数能够将一系列的操作封装在一起,使得代码更加模块化.可重用和易于维护. 在本文中,我们将详细介 ...

  4. Linux系统运维之Hadoop、Hive、Flume数据处理

    配置环境 主机名 IP 备注 Hadoop-Data01 192.168.0.194 Hadoop-Master/Hive/Mysql/Flume-Agent Hadoop-Data02 192.16 ...

  5. .NET Core 允许跨域的两种方式实现(IIS 配置、C# 代码实现)

    〇.前言 当把开发好的 WebApi 接口,部署到 Windows 服务器 IIS 后,postman 可以直接访问到接口并正确返回,这并不意味着任务完成,毕竟接口嘛是要有交互的,最常见的问题莫过于跨 ...

  6. 一文搞懂什么是 API

    在我学习软件开发之前,API 听起来像是一种啤酒(IPA,印度淡色艾尔).如今我经常使用这个术语,事实上最近我还尝试在酒吧里点了一个 API,结果酒保给了我一个: 404 资源未找到的回应 无论是在科 ...

  7. go web学习(四)

    跟着b站https://space.bilibili.com/361469957 杨旭老师学习做的笔记 中间件 什么是中间件 请求----> 中间件 ----> Handler 响应 &l ...

  8. JVM GC配置指南

    本文旨在简明扼要说明各回收器调优参数,如有疏漏欢迎指正. 1.JDK版本 以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本. 2.如何选择垃圾回 ...

  9. Lock同步_小记

    使用同步机制的这种方式解决线程安全问题,但是不知道具体的锁对象在哪里添加,并且锁对象在哪里释放锁对象,对于这种情况Jdk5以后Java提供了一个更具体的锁对象:Lock Lock 实现提供了比使用 s ...

  10. 【渗透测试】利用Cobalt Strike渗透Windows

    目标 在kali中使用Cobalt Strike对Windows进行渗透 机器环境 kali(服务端):192.168.175.129 win11(攻击机):192.168.175.128 win11 ...