我的一些简单题

news/2026/1/17 0:46:16/文章来源:https://www.cnblogs.com/harmisyz/p/19494435

我终将成为你的倒影

思维:3。

代码:2。

题面

题目背景

『 现实并不像回忆那般,充满变化的余地。』

题目描述

岛村是不喜欢上课的。但是今天的数学课上,一个函数 \(f(x)=\lfloor \frac{x+a}{b}\rfloor\) 吸引住了她。

她现在有一个长度为 \(n\) 的序列 \(A\)\(m\) 个询问。她想知道对于每组 \(l,r,a,b\),记 \(B_i=f(A_i)\)\(\displaystyle\sum^r_{i=l+1}[B_i=B_{i-1}]\) 的值为多少(其中若 \([]\) 里面的表达式为真,值为 \(1\),否则为 \(0\))。

但是她着急于去找安达打乒乓球,所以把问题交给你了。

本题强制在线,每次的 \(l,r,a,b\) 均要异或上一次的答案,若这是第一次询问,则不做操作。

输入格式

第一行两个整数 \(n,m\)

第二行 \(n\) 个整数 \(A_i\)

接下来 \(m\) 行,每行四个整数 \(l,r,a,b\)

输出格式

对于每次询问,输出一个整数表示答案。

输入输出样例 #1

输入 #1

10 10
1 3 4 3 4 7 2 9 7 10 
1 10 3 7
3 13 3 2
4 6 2 7
0 6 7 2
2 7 10 1
1 4 0 10
4 5 2 8
2 9 2 0
1 5 0 7
0 2 6 3

输出 #1

4
1
1
3
2
2
1
0
4
1

说明/提示

对于所有测试数据,保证:\(1 \le n,m,A_i \le 10^5\)\(1\le b\le 500\)\(0 \le a\le2\times10^9\)\(l<r\)

Subtask 限制 分值
\(0\) \(n,m\le100\) \(10\)
\(1\) \(n\le100\) \(20\)
\(2\) \(b\le10\) \(20\)
\(3\) - \(50\)

题解

百合题。

没啥意思,分块模板说是。

注意到 \(b \le 500\),考虑暴力。我们去枚举所有的 \(b\),由于 \(f(x)=\lfloor \frac{x+a}{b}\rfloor=\lfloor \frac{a}{b}\rfloor+\lfloor \frac{x+a-\lfloor \frac{a}{b}\rfloor \times b}{b}\rfloor=\lfloor \frac{a}{b}\rfloor+\lfloor \frac{x + a\bmod b}{b}\rfloor\),其中 \(\lfloor \frac{a}{b}\rfloor\) 对任意的 \(x\) 都是一样的。所以这玩意没用。那么对于一个 \(b\),可能得到不同答案的 \(a\) 就只有 \(O(b)\) 个了。

考虑 \(A_i\)\(A_{i-1}\)\(b\) 一定的时候,\(a\) 的取值范围,使得 \(f(A_i)=f(A_{i-1})\)。注意到 \(\lfloor \frac{x+a}{b}\rfloor - \lfloor \frac{x}{b}\rfloor \le 1\),所以 \(|f(A_i)-f(A_{i-1})|\)\(a=y\) 时的值相比 \(a=0\) 时的值变化量不超过 \(1\)。也就是说,当 \(a=0\)\(|f(A_i)-f(A_{i-1})| \ge 2\)\((i,i-1)\) 是不可能产生贡献的。

\(A_i \ge A_{i-1}\)。对 \(a=0\)\(f(A_i)\)\(f(A_{i-1})\) 的大小分类讨论:

  1. \(f(A_{i})=f(A_{i-1})\)。记 \(r_i=A_i \bmod b\)。当 \(a+r_i \ge b\)\(f(A_i)\) 的值会增加 \(1\)\(f(A_{i-1})\) 同理。那么 \(i\)\(i-1\) 要么都不增加,要么都增加。则 \(a\) 的取值范围为 \([0,b-\max(r_i,r_{i-1})) \cup [b-\min(r_i,r_{i-1}),b)\)
  2. \(f(A_i) =f(A_{i-1})+1\)。那么当 \(f(A_{i-1})\) 增加且 \(f(A_i)\) 不增加时会产生贡献。则 \(a\) 的取值范围为 \([b-r_{i-1},b-r_{i})\)

那么这样就能维护出 \(l=1 \land r=n\) 时的所有答案了。现在考虑区间询问。很容易想到,记 \(f_{a,b,i}\) 表示在 \(a,b\) 已知时,\(f(A_i)\) 是否等于 \(f(A_{i-1})\)。但是这样空间是 \(O(b^2 n)\) 的。注意到我们的预处理是 \(O(nb)\) 的复杂度,这样维护前缀和查询的复杂度是 \(O(m)\) 的。考虑平衡,我们拿时间换空间,最简单的情况不难想到可以分块。我们将每 \(B\) 个数在 \(a,b\) 已知时的答案维护在一起,那么查询的时候就只需要暴力维护散块的答案了。这样的时间复杂度是 \(O(nb+m(\frac{n}{B}+B))\) 的,空间复杂度是 \(O(b^2\frac{n}{B})\) 的。当 \(b=\sqrt{n}\) 时可以做到时间复杂度 \(O(nb+m\sqrt{n})\),空间复杂度 \(O(b^2 \sqrt{n})\)

抱月

思维:3。

代码:4。

题面

题目描述

\(P(u,v)\) 表示树上从节点 \(u\) 到节点 \(v\) 依次经过的点组成的序列,包括 \(u\)\(v\)

\(dep_u\) 表示在以 \(1\) 为树根时,节点 \(u\) 的深度(根节点深度为 \(0\))。

\(\operatorname{LCA}(u,v)\) 为树上节点 \(u\)\(v\) 在以 \(1\) 为树根时的最近公共祖先。

抱月有一棵树,树根为 \(1\),一共有 \(n\) 个节点。其中第 \(i\) 个节点的颜色是 \(c_i\)。她发现,对于一个节点 \(x\) 和整数 \(k\),如果将 \(P(x,1)\) 中所有满足:\(dep_y\equiv dep_x \pmod{k}\)\(y\) 都拿出来,这些 \(y\) 是有意义的。

所以,你需要解决这样一个问题。给定 \(m\) 次询问,每次两个整数 \(x,k\),求删掉 \(P(x,1)\) 中所有满足 \(dep_y\equiv dep_x \pmod{k}\)\(y\) 后,满足 \(dep_z \le dep_x\)\(z\) 中不同 \(c_z\) 的数量。每次询问独立,也就是说这次删的点在下一次询问会恢复。

如果不理解,请看样例解释。

输入格式

第一行两个整数 \(n,m\)

第二行 \(n\) 个整数 \(c_i\)

接下来 \(n-1\) 行,每行两个整数 \(u~v\),表示 \(u~v\) 之间有连边。

接下来 \(m\) 行,每行两个整数 \(x_i~k_i\),表示询问。

输出格式

\(m\) 行,每行一个整数,表示答案。

输入输出样例 #1

输入 #1

11 9
3 1 4 8 8 2 6 4 7 5 1
1 2
1 3
1 4
4 9
9 10
9 11
3 5
3 6
5 8
5 7
3 1
4 1
5 2
11 4
10 3
8 2
6 1
7 1
7 2

输出 #1

2
2
5
8
6
7
3
6
7

说明/提示

对于所有测试数据,保证 \(1 \le n,m,k_i \le 10^5\)\(1 \le u,v,x_i \le n\)\(0 \le c_i \le 10^5\)

Subtask 限制 分值
\(0\) \(n,m \le 10^3\) \(10\)
\(1\) \(c_i\) 相同 \(4\)
\(2\) \(k_i > \max\limits_{j=1}^{n} dep_j\) \(16\)
\(3\) \(n,m \le 5\times 10^4\) \(30\)
\(4\) \(40\)

样例解释

对于第 \(1\) 个询问,满足条件的 \(y\) 为:\(1,3\)。删掉之后,满足条件的 \(z\) 为:\(2,4\)。其中 \(c_1=2,c_4=8\),所以答案为 \(2\)

对于第 \(3\) 个询问,满足条件的 \(y\) 为:\(1,5\)。删掉之后,满足条件的 \(z\) 为:\(2,3,4,6,9\)。其中 \(c_2=1,c_3=4,c_4=8,c_6=2,c_9=7\),所以答案为 \(5\)

题解

百合题。

根号分治模板说是。

题面是让求所有深度不大于 \(x\) 且不为 \(x\)\(k\) 倍祖先的点的颜色构成集合的大小。

很显然的,如果一个颜色 \(col\) 在最后的集合中没有出现过,那么 \(c_i=col\)\(i\) 要么是 \(x\)\(k\) 倍祖先,要么深度大于 \(x\) 的深度。因为没被删的点看起来很不好维护,所以考虑维护有多少种颜色完全被删了。

考虑将深度大于 \(x\) 的深度的点和 \(x\)\(k\) 倍祖先分开维护。对于深度大于 \(x\) 的深度的点,我们可以再反一次,转化为深度不大于 \(x\) 的深度的点的颜色构成集合的大小。求这个有若干种方式,能过在 \(O(n)\) 的复杂度维护出所有 \(dep_x=y\) 时的答案。那么现在问题转化为:求有多少种颜色 \(col\),满足 \(c_i =col \land dep_i \le dep_x\) 的点均为 \(x\)\(k\) 倍祖先。这个很典吧,考虑根号分治。

由于 \(x\)\(k\) 倍祖先数量为 \(\lfloor\frac{dep_x}{k}\rfloor\),如果我们每次暴力跳 \(k\) 级祖先,那么复杂度是 \(O(\frac{dep_x}{k})\) 的。维护一个颜色是否出现完可以按照 BFS 序记录每个点。那么记 \(lst_i\) 为颜色 \(i\) 上一次出现的位置,则 \(dep \in [dep_u,dep_{lst_i}]\) 颜色 \(i\) 不能出现 \(>2\) 次,即将每种颜色按照 BFS 序排序后它们相邻。所以单次时间复杂度是 \(O(\frac{dep_x}{k} \log n)\sim O(\frac{dep_x}{k})\)

如果这个 \(k\) 极小,上面的做法显然很裂。考虑枚举 \(k\),将所有 \(k\) 相同的询问统一处理。假设现在 \(k\) 一定。对于一个颜色 \(col\),我们将 \(c_i=col\) 的点剖出来,建成一棵虚树,观察虚树的形态。我们将虚树按照深度分层,那么对于前 \(i\) 层,如果我们有一个询问 \(Dep_{i+1} >dep_x\ge Dep_i\),则当 \(col\) 会对 \(x\) 产生贡献的必要条件一定是前 \(i\) 层的虚树形态是一条链。这个显然吧,如果不是链,那么一定有一个点 \(u\),有 \(deg_u \ge 3\)\(dep_u \le dep_x\)。那么一定存在一个点颜色为 \(col\) 且不为 \(x\)\(k\) 倍祖先。

我们接着去枚举层数 \(i\)。当前 \(i\) 层构成虚树的形态为一条链时,考虑会对哪些 \(x\) 产生贡献。如果 \(col\)\(x\) 产生了贡献,那么另一个充分必要条件是这条链上所有点均为 \(x\)\(k\) 倍祖先。根据虚树的性质,既然是一条链,那么这虚树上所有点的颜色都为 \(col\),所以是必须的。我们有:\(Dep_i \le dep_x < Dep_{i+1}\)。哦我是不是忘说了,\(Dep_i\) 表示第 \(i\) 层节点在原树上的深度。

我们可以找到第 \(i\) 层的虚树上节点在原树上的位置。那么现在就相当于对于一个子树的一个深度区间加问题了。哦这里还有个条件,就是 \(dep_x\) 应该与 \(Dep_1\) 对于 \(k\) 同余,且 \(Dep_j (j \le i)\) 也应该与 \(Dep_1\) 对于 \(k\) 同余。维护这个可以将所有颜色合在一起处理,在节点上打 \(tag\) 即可。对于一个 \(k\) 的时间复杂度 \(O(n)\)

那么现在我们有两种做法,一种做法的时间复杂度为 \(O(\sum \frac{dep_x}{k}+n\log n)\),一种为 \(O(nK)\)。最坏情况下,有时间复杂度为 \(O(\sum\frac{n}{k}+nK+n\log n)\)。看情况平衡即可,时间复杂度 \(O(n\log n+n\sqrt{n})\)

思维:1。

代码:1。

题面

题目背景

只属于我们两人的樱花不畏寒冬,大肆绽放。

题目描述

樱有一个长度为 \(n\) 的序列 \(A\)。她现在有 \(m\) 个问题,第 \(i\) 个问题是:\(\operatorname{mex}(A_{l_i},A_{l_{i+1}},\dots,A_{r_i})\) 的值为多少。

抱月想要给樱改改题。具体地,她将构造一个长度为 \(k\) 的序列 \(B\)。那么樱的第 \(i\) 个问题将变成:求 \(\operatorname{mex}(A_{l_i},A_{l_{i+1}},\dots,A_{r_i},B_1,B_2,\dots,B_k)\)

如果对于所有 \(m\) 个问题,在樱通过一切方式求出来后都是相同的,那么樱会有成就感。

抱月想知道,当 \(k=0,1,\dots,n\) 时,是否能构造出来一个长度为 \(k\) 的序列 \(B\),使得樱开心。如果可以,那么这 \(m\) 个问题的答案的最大值是多少。如果不可以,请输出 \(-1\)

【形式化题面】

给定一个长度为 \(n\) 的序列 \(A\)\(m\)\(l_i,r_i\)

要构造一个长度为 \(k\) 的序列 \(B\),记 \(f_i=\operatorname{mex}(A_{l_i},A_{l_i+1},\dots,A_{r_i},B_1,B_2,\dots,B_k)\)。那么有:\(f_i(1 \le i \le m)\) 相等。

对于 \(k=0,1,\dots ,n\),求在所有满足条件的 \(B\) 中,\(f_i\) 值最大是多少。若不存在任何一个 \(B\),则最大值为 \(-1\)

\(\operatorname{mex}(A_{1},A_{2},A_{3},\dots,A_m)\) 为可重集 \(\{A_1,A_2,A_3,\dots,A_m\}\) 中最小的不存在的自然数

输入格式

第一行两个整数 \(n,m\)

第二行 \(n\) 个整数 \(A_i\)

接下来 \(m\) 行,每行两个整数 \(l_i,r_i\)

输出格式

对于每个 \(k\),输出一个整数表示答案。

输入输出样例 #1

输入 #1

7 3
0 1 4 1 5 1 4
1 3
1 6
5 7

输出 #1

-1
2
3
3
6
7
8
9

说明/提示

对所有数据,满足 \(1 \le n,m \le 10^6,0 \le A_i <n, 1 \le l_i \le r_i \le n\)

::cute-table{tuack}

子任务编号 \(n,m\le\) 特殊性质 分值
#1 \(2000\) \(\text{15pts}\)
#2 \(10^6\) A \(\text{10pts}\)
#3 ^ B \(\text{15pts}\)
#4 ^ \(\text{60pts}\)

特殊性质 A:\(A_i=n-1\)

特殊性质 B:\(\sum(r_i-l_i+1)\le 100\)

题解

白合题。

注意到这个 \(\operatorname{mex}\) 是个假的,启示我们去枚举一个值 \(x\),维护 \(f_i = x\)\(k\) 的最小值。

\(g(x)\) 为上述最小值,那么一定有 \(g(x) \ge g(x-1)\)。如果一个区间 \([l_i,r_i]\) 不存在 \(x\),则说明任意相邻两个 \(x\) 的位置 \(p1,p2(p1 < p2)\) 要么满足 \(p2 < l_i\),要么满足 \(p1>r_i\),要么满足 \(p1 < l_i \le r_i < p_2\)

去枚举相邻两个 \(x\) 的位置 \(p1,p2\)。这个的总枚举次数 \(O(n)\)。则 \(l_i \in (p1,p2) \land r_i \in (p1,p2)\) 的区间一定满足 \(\operatorname{mex} \le x\)。维护 \(cnt_x\) 表示不包含 \(x\) 的区间数量,时间复杂度 \(O(n\log n)\)

现在考虑使用 \(cnt\) 计算 \(g\)。对于 \(g_x\),因为要使得所有区间都满足 \([0,x-1]\) 中的数在拼接上 \(B\) 后出现过至少一次,且 \(x\) 没有出过。所以若存在 \(i \in [0,x-1]\)\(cnt_i \ne 0\),则 \(B\) 中需要有一个 \(i\) 来使这 \(cnt_i\) 个区间包含 \(i\)。同时还需要满足 \(cnt_x=m\),因为如果存在至少一个区间包含了 \(x\),无论 \(B\) 长什么样都不可能让 \(f_i\) 全为 \(x\)。总结一下,\(g_i=\sum\limits_{j=0}^{i-1}[cnt_j \ne 0]\),且在 \(cnt_i\ne m\)\(g_i=10^{100}\)

那么最后取前缀 \(\max\) 就可以知道答案了。时间复杂度 \(O(n\log n)\)

朝向过去的远方

思维:2。

代码:1。

题面

题目背景

天空很蓝。

我抬头看向它。

云朵飘过。

题目描述

在通往世界的尽头,有一条路。路上有 \(n\) 个点,其中从前往后第 \(i\) 个点的记忆度为 \(A_i\)

抱月朝前走着。因为不想忘记太多,到点 \(i\) 时,她会询问对于从 \(i\)\(n\) 的每个点 \(x\),最小的 \(j\) 的值,满足 \(A_j,A_{j+1},\dots,A_x\) 按位与的结果和 \(A_{i},A_{i+1},\dots,A_{x}\) 按位与的结果相同。

也许是记忆力不太好,对于每个 \(i\),记 \(s(i)\)\(x=i,i+1,\dots,n\) 时对应的 \(j\)\(i\) 的距离(\(|i-j+1|\))的按位异或和。请你在她走到尽头时,告诉她 \(\sum\limits_{i=1}^{n}s(i) \bmod m\) 的值。

【形式化题面】:

给定一个长度为 \(n\) 的序列 \(A\)

\(g(l,r)=(A_l\&A_{l+1}\&\dots\& A_r)\)\(f(r,x)=\min\limits_{1 \le l \le r \land g(l,r)=x }^{}l\)

输出 \(\sum\limits_{i=1}^{n} (\bigoplus\limits_{r=i}^{n}(i-f(r,g(i,r))+1)) \bmod m\) 的值。

输入格式

第一行两个整数 \(n,m\)

第二行 \(n\) 个整数 \(A_i\)

输出格式

一行 \(1\) 个整数表示答案。

输入输出样例 #1

输入 #1

5 4
5 4 3 2 1

输出 #1

3

输入输出样例 #2

输入 #2

3 10
3 15 31

输出 #2

2

输入输出样例 #3

输入 #3

10 16
18 7 9 6 6 2 4 8 5 10

输出 #3

8

说明/提示

今天它飘得很快,目标指向远方。

追逐着云朵的目光望向前方,樱花花瓣飞进我的视线。

对所有数据,满足 \(1 \le n \le 10^6,1 \le A_i,m < 2^{30}\)

::cute-table{tuack}

子任务编号 \(n\le\) 特殊性质 分值
#1 \(10^6\) A \(\text{10pts}\)
#2 \(10^3\) \(\text{10pts}\)
#3 \(10^5\) B \(\text{30pts}\)
#4 \(10^6\) \(\text{50pts}\)

特殊性质 A:\(A_i\) 相同。

特殊性质 B:\(1 \le A_i,m < 2^{20}\)

题解

百合题。

首先对于 \(r=r0\) 时,不同的 \(g(l,r)\) 值只有 \(O(\log V)\) 个。证明略。记 \(B_{r0}=\{(l_1,r_1,x_1),(l_2,r_2,x_2),\dots,(l_k,r_k,x_k)\}\) 为相同 \(g\) 值时 \(l\) 的区间。如 \((l_1,r_1,x_1)\) 表示 \(l\in [l_1,r_1],r=r0\) 时,\(g(l,r)=x_1\)。这个可以在 \(O(n\log V)\) 时间找到。

那么对 \(x_i\) 相同的所有区间单独计算贡献。也就是说,每次我们可以找到 \(O(n)\)\((l,r,x)\),使得 \(x=x0\)。而这个总数是 \(O(n\log V)\) 的,因为 \(\sum |B_i|\)\(O(n\log V)\) 的。则现在问题变成,对于每个区间 \(i \in [l,r]\),将 \(res_i\) 异或上 \(i-l+1\)。暴力做显然是 \(O(n^2)\) 的。

对于每个 \(x=x0\) 的区间,观察一下会发现对于任意两个 \([l1,r1],[l2,r2]\),要么 \(l1=l2,r1 \le r2\),要么不相交。

证明:

如果 \(B_{i}\) 包含 \((l,r,x)\)\(B_{i+1}\) 包含 \((l',r',x)\)。那么有 \(x \subset a_{i+1}\),则 \(l=l’\)。因为 \(g(l,r)\ge g(l-1,r)\),如果 \(l > l'\)\(\gcd(A_{l'},\dots,A_{i+1})=x\le g(l',i)=x\),不符合条件。如果 \(l < l'\)\(g(l,i)=x\ge g(l,i+1)\),而 \(x\subset A_{i+1}\) 所以 \(g(l,i+1)=x\),不符合条件。\(r \le r'\) 显然。

如果 \(B_i\) 包含 \((l,r,x)\)\(B_{j}\) 包含 \((l',r',x)\)\(j > i+1\)。那么在 \(B_{i+1}\sim B_{j-1}\) 都不包含 \(([],[],x)\) 时,说明至少存在一个 \(k\),有 \(g(r,k) \ne x (i+1 \le k <j)\)。则 \(l' > k > r\)

对于所有左端点相同的区间,\((i-l+1)\)\(l\) 就是定值了,只需要统计异或的次数。而我们枚举区间的左端点 \(l0\),暴力往右拓展,直到拓展的右端点不存在于某个左端点为 \(l0\) 的区间位置(也就是乘的次数变成 \(0\))时间复杂度就是对的。

这个的证明可以这么考虑:

原本暴力枚举区间中的所有点时间复杂度为 \(O(\sum (r-l+1)) =O(n^2)\),上面的做法优化的点在于:将 \(g(i,r)=x0\) 原本需要 \(O(\sum [x=x0, l \le i \le r])\) 的代价修改变成了 \(O(1)\) 的代价修改。则对于 \(i\) 减少的修改次数等价于以 \(i\) 为区间左端点,右端点 \(r \in [L,R]\)\(g(i,r)=x\)\(R-L\) 的值。那么 \(i\) 的总修改代价就应该是以 \(i\) 为区间左端点,不同的 \(g(i,r)\) 的数量。这个的总和和开头一样是 \(O(n\log V)\) 的。

时间复杂度 \(O(n\log V)\)'

P14203 这次要永远 做朋友

思维:4。

代码:2。

题面 ## 题目背景

实际上,我们的友情早已生锈、崩坏。

或许今天只是残骸上的碎片,恰巧散发出了微弱光芒而已。

即使如此......

题目描述

定义 \(f(l,r)\)\(\{a_l,a_{l+1},\dots,a_r\}\) 的绝对众数的值。若不存在,则 \(f(l,r)=10^{100}\)。也就是出现次数 \(c > \lfloor\frac{r-l+1}{2}\rfloor\) 的值。

定义 \(\operatorname{mex}(l,r)\)\(\{a_l,a_{l+1},\dots,a_r\}\)\(\operatorname{mex}\) 值。也就是最小的不存在的自然数。

给定长度为 \(n\) 的序列 \(a_{1\dots n}\),求 \(\sum\limits_{l=1}^{n}\sum\limits_{r=l}^{n}[\operatorname{mex}(l,r)\ge f(l,r)]\)

输入格式

第一行一个整数 \(n\)

第二行 \(n\) 个整数 \(a_i\)

输出格式

一行一个整数,表示答案。

输入输出样例 #1

输入 #1

4
0 0 1 2

输出 #1

4

输入输出样例 #2

输入 #2

7
3 1 0 1 2 2 0

输出 #2

3

输入输出样例 #3

输入 #3

10
1 1 0 0 2 2 3 3 0 0

输出 #3

10

说明/提示

我仍然真的认为——那笑容非常灿烂,甚至令我指尖发麻。

对所有数据,满足 \(1 \le n \le 3\times 10^6,0 \le a_i \le n\)

::cute-table{tuack}

子任务编号 \(n\le\) 特殊性质 分值 时间限制
#1 \(100\) \(\text{5pts}\) \(\text{1s}\)
#2 \(5000\) ^ \(\text{5pts}\) ^
#3 \(3 \times 10^4\) ^ \(\text{15pts}\) ^
#4 \(10^5\) ^ \(\text{15pts}\) ^
#5 ^ B \(\text{10pts}\) ^
#6 \(3\times 10^6\) A \(\text{2pts}\) ^
#7 ^ \(\text{24pts}\) ^
#8 ^ \(\text{24pts}\) \(\text{450ms}\)

特殊性质 A:\(a_i=0\)

特殊性质 B:\(0 \le a_i \le 10\)

题解

百合题。

有关绝对众数的启示我们枚举众数。记当前众数为 \(x\),则在将 \(a_i=x\) 看作 \(1\)\(a_i \ne x\) 看作 \(-1\) 后,\(f(l,r)=x\) 当且仅当 \(\sum\limits_{i=l}^{r} a_i >0\)。(这里的 \(a_i\) 是变成 \(1,-1\) 后的)

有关数区间数量的题启示我们对序列进行分治。但是如果对每个 \(x\) 进行整个序列的分治单次时间复杂度不低于 \(O(n\log n)\),则总时间复杂度至少是 \(O(n^2\log n)\) 的。

既然不能对整个序列分治,那就对 \(a_i=x\) 的位置分治。记当前分治区间 \([l,r]\) 表示从 \(1\) 开始第 \(l-1\) 个满足 \(a_i=x\) 的位置 \(+1\) 到第 \(r+1\) 个满足 \(a_i=x\) 的位置 \(-1\) 的区间。记为 \([L,R]\)

根据定义,\(c > \lfloor \frac{r-l+1}{2}\rfloor\),而当前分治区间一共只有 \(r-l+1\)\(x\)。所以该区间 \([L,R]\) 中一个 \(f(l_0,r_0)=x\) 的区间一定满足 \(r_0 -l_0+1 \le 2(r-l+1)\)

这说明将第 \(\frac{r-l+1}{2}\)\(x\) 的位置看作 \(mid\),满足 \(l_0 \le mid < r_0\)\(f(l_0,r_0)=x\) 一定有 \(mid-l_0+1 \le 2(r-l+1) \land r_0-mid \le 2(r-l+1)\)。换句话说,只需要从 \(mid\) 往左往右拓展 \(O(r-l+1)\) 个位置就行了,其它的位置一定不会产生跨 \(mid\) 的贡献。记最左边的位置为 \(l_{min}\),最右边的位置为 \(r_{max}\)

\([l_{min},mid]\) 的所有位置求后缀和(\(a_i\) 变成 \(1,-1\) 时的),对 \([mid+1,r_{max}]\) 的所有位置求前缀和。那么问题变成,求 \(s_{l_0}+s_{r_0}>0 \land \operatorname{mex}(l_0,r_0)\ge x\) 的数量。

枚举 \(r_0=r_{max} \to (mid+1)\),记 \(lst_i\) 为原序列上 \(i\) 前面第一个满足 \(a_j=i\)\(j\) 的值,不存在则为 \(0\)。根据 \(\operatorname{mex}(l,r-1) \le \operatorname{mex}(l,r)\)\(r_0+1 \to r_0\) 时,若 \(lst_{r_0+1} > mid \lor a_{r_0+1}\ge x\),显然没有任何作用。反之 \(l_0 \in (lst_{r0+1},mid]\) 都有 \(\operatorname{mex}(l_0,r_0) < x\)。那么这个就相当于每次撤销一段区间,维护剩下前缀中满足 \(s_{l_0}+s_{r_0} >0\) 的数量。

这个怎么 \(O(1)\) 维护呢?不难发现,\(|s_{r_0}-s_{r_0+1}| =1\)。那 \(s_{r_0}-s_{r_0+1}=1\) 举例。对于在 \(r_0\) 之前就被撤销的区间中,如果满足 \(s_{l_0}+s_{r_0+1}>0\),那一定满足 \(s_{l_0}+s_{r_0}>0\),唯一的区别在于 \(s_{l_0}+s_{r_0+1}=0\) 时仍然满足 \(s_{l_0}+s_{r_0}>0\)。这个开个同维护某个值的数量即可。而对于在 \(r_0\) 时被撤销的区间,枚举这个区间的所有数,再次维护桶即可。因为每个 \([l_{min},mid]\) 中的数最多被撤销一次,所以时间复杂度是 \(O(len)\) 的。

那么每一次分治区间 \([l,r]\) 的时间复杂度就是 \(O(len)\) 的。记 \(cnt_x\) 为原序列中 \(a_i=x\) 的数量,则对于一个 \(x\) 分治的时间复杂度就是 \(O(cnt_x \log cnt_x)\)。总时间复杂度 \(O(n\log n)\)

能不能更快呢?对于上述方法,我们拥有了一个 \(O(len)\) 求解序列中 \(f(l,r)=x\) 且满足条件的 \((l,r)\) 的数量的做法。再次观察绝对众数,上面说最多拓展 \(O(cnt_x)\) 个数,再多就不可能存在绝对众数。那么对单个 \(x\),发现只会对区间贡献 \(O(1)\) 个位置。考虑 \(-1,1,-1\) 的构造即可。那么可以找到更准确的有用的若干个区间,满足相邻两个区间中间不会有对 \(f(l,r)=x\) 的产生贡献的。这个区间的长度和是 \(O(cnt_x)\) 的。时间复杂度做到 \(O(n)\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PaddleOCR-VL-WEB深度体验:SOTA性能+多语言支持,本地推理更省心

PaddleOCR-VL-WEB深度体验&#xff1a;SOTA性能多语言支持&#xff0c;本地推理更省心 1. 引言&#xff1a;为何选择PaddleOCR-VL-WEB&#xff1f; 在当前AI驱动的文档数字化浪潮中&#xff0c;高效、精准且易于部署的OCR解决方案成为企业与开发者的核心需求。尽管市面上已有…

cv_unet_image-matting如何重置参数?页面刷新快捷操作指南

cv_unet_image-matting如何重置参数&#xff1f;页面刷新快捷操作指南 1. 引言 在基于U-Net架构的图像抠图工具cv_unet_image-matting中&#xff0c;用户界面&#xff08;WebUI&#xff09;经过二次开发优化&#xff0c;提供了更加直观和高效的操作体验。该系统由开发者“科哥…

用Heygem生成培训视频,企业内部应用案例

用Heygem生成培训视频&#xff0c;企业内部应用案例 在数字化转型浪潮下&#xff0c;越来越多企业开始探索AI技术在内部培训、知识传递和员工赋能中的创新应用。传统培训方式往往面临制作周期长、成本高、更新困难等问题&#xff0c;而数字人视频生成技术的出现&#xff0c;为…

手把手教你用Gradio界面玩转Paraformer语音识别,零基础入门

手把手教你用Gradio界面玩转Paraformer语音识别&#xff0c;零基础入门 1. 引言&#xff1a;为什么你需要本地化语音识别&#xff1f; 在数据隐私日益受到重视的今天&#xff0c;将用户的语音上传至云端进行识别已不再是唯一选择。尤其在金融、医疗、政务等对数据安全高度敏感…

通义千问2.5保姆级教程:app.py启动服务详细步骤

通义千问2.5保姆级教程&#xff1a;app.py启动服务详细步骤 1. 引言 1.1 业务场景描述 随着大语言模型在实际应用中的广泛落地&#xff0c;越来越多开发者希望基于开源模型进行二次开发和本地部署。Qwen2.5-7B-Instruct 是通义千问系列中性能优异的指令调优模型&#xff0c;…

FSMN VAD声纹识别预处理:高质量语音段提取保障特征准确性

FSMN VAD声纹识别预处理&#xff1a;高质量语音段提取保障特征准确性 1. 引言 在语音识别、声纹识别和语音增强等任务中&#xff0c;输入音频的质量直接影响后续模型的性能表现。实际应用中的录音往往包含大量静音、背景噪声或非目标语音片段&#xff0c;若直接用于特征提取&…

手把手教你部署CV-UNet抠图工具,开箱即用太省心

手把手教你部署CV-UNet抠图工具&#xff0c;开箱即用太省心 1. 业务场景与方案价值 在电商、设计、内容创作等领域&#xff0c;图像去背景&#xff08;抠图&#xff09;是一项高频且耗时的任务。传统依赖Photoshop等专业软件的手动操作不仅学习成本高&#xff0c;而且效率低下…

英伟达 800V 能源架构

来源&#xff1a;AI 未来课代表

2026必备!9个AI论文软件,助研究生轻松搞定论文写作!

2026必备&#xff01;9个AI论文软件&#xff0c;助研究生轻松搞定论文写作&#xff01; AI 工具&#xff1a;让论文写作不再“难” 在研究生阶段&#xff0c;论文写作往往成为一项令人头疼的任务。无论是开题报告、文献综述还是最终的论文定稿&#xff0c;都需要大量的时间与精…

全网最全研究生必备AI论文软件TOP8测评

全网最全研究生必备AI论文软件TOP8测评 学术写作工具测评&#xff1a;为何需要一份权威榜单 在科研日益数字化的今天&#xff0c;研究生群体对高效、智能的论文辅助工具需求愈发迫切。从文献检索到内容生成&#xff0c;从格式排版到查重检测&#xff0c;每一个环节都可能成为研…

GPT-SoVITS移动端解决方案:云端推理+APP调用详解

GPT-SoVITS移动端解决方案&#xff1a;云端推理APP调用详解 你是不是一位APP开发者&#xff0c;正想为你的应用加入“语音克隆”功能&#xff1f;比如让用户上传一段录音&#xff0c;就能生成一个专属的AI声音&#xff0c;用来朗读文章、做有声书、甚至当虚拟主播&#xff1f;…

Windows 11远程桌面多用户并发技术深度解析与实战指南

Windows 11远程桌面多用户并发技术深度解析与实战指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 在现代企业环境中&#xff0c;远程协作已成为日常工作的重要组成部分。Windows 11系统自带的远程桌面功能虽然…

树莓派5摄像头+PyTorch实现低延迟人脸追踪方案

树莓派5 PyTorch 实现低延迟人脸追踪&#xff1a;从零构建边缘视觉系统 你有没有遇到过这样的场景&#xff1f;想做个能“看人”的小机器人&#xff0c;结果一跑人脸检测&#xff0c;画面卡得像幻灯片&#xff1b;或者用USB摄像头做互动装置&#xff0c;动作总是慢半拍——不…

再也不怕客户改需求!Qwen-Image-Layered快速响应调整

再也不怕客户改需求&#xff01;Qwen-Image-Layered快速响应调整 1. 引言&#xff1a;图像编辑的痛点与新范式 在数字内容创作领域&#xff0c;图像编辑是一项高频且关键的任务。无论是广告设计、UI美化还是电商主图制作&#xff0c;设计师常常面临反复修改的需求&#xff1a…

如何选择合适的量化类型?

选择合适的量化类型,核心是匹配业务场景的精度要求、模型任务类型和目标硬件能力,优先遵循“低成本试错”原则——先选简单易操作的量化类型,不满足需求再逐步升级。下面结合量化类型的特性、适用场景和实操判断流程…

没计算机基础?BGE-Reranker-v2-m3可视化操作指南

没计算机基础&#xff1f;BGE-Reranker-v2-m3可视化操作指南 你是不是也遇到过这种情况&#xff1a;作为产品经理&#xff0c;想体验一下最新的AI模型效果&#xff0c;但一看到“命令行”、“部署”、“代码”这些词就头大&#xff1f;别担心&#xff0c;这正是我写这篇文章的…

Qwen3-Embedding-4B部署指南:多模型协同工作方案

Qwen3-Embedding-4B部署指南&#xff1a;多模型协同工作方案 1. 引言 随着大模型在语义理解、信息检索和知识管理等场景的广泛应用&#xff0c;高质量的文本向量化能力成为构建智能系统的核心基础。通义千问团队于2025年8月开源了Qwen3-Embedding-4B——一款专为高效、高精度…

Arduino下载兼容性问题汇总:初学用户避雷贴士

Arduino下载失败&#xff1f;别慌&#xff01;一文搞懂跨平台烧录难题 你是不是也遇到过这样的情况&#xff1a;兴冲冲地打开Arduino IDE&#xff0c;写好代码点击“上传”&#xff0c;结果弹出一串红字错误—— “avrdude: stk500_recv(): programmer is not responding” …

电商客服实战:Qwen2.5极速版对话机器人落地应用

电商客服实战&#xff1a;Qwen2.5极速版对话机器人落地应用 1. 业务场景与技术选型背景 随着电商平台用户规模的持续增长&#xff0c;传统人工客服在应对高频、重复性咨询时面临响应延迟高、人力成本上升等挑战。特别是在促销高峰期&#xff0c;瞬时咨询量激增&#xff0c;对…

Qwen3-0.6B电商应用案例:商品描述自动生成系统搭建教程

Qwen3-0.6B电商应用案例&#xff1a;商品描述自动生成系统搭建教程 1. 引言 随着电商平台商品数量的快速增长&#xff0c;人工撰写高质量、风格统一的商品描述已成为运营团队的重要负担。传统方式不仅效率低&#xff0c;还难以保证文案的一致性和吸引力。近年来&#xff0c;大…