A4772 | 统计操作后不同的序列
来源官方 / 2025
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
给定一个长度为 $N$ 的整数序列 $(A_1, A_2, \ldots A_N)$,你可以对其执行一次以下操作:
- 选择一个二元组 $(L, R)$,其中 $1 \le L \le R \le N$;
- 将序列中的元素 $A_i (L \le i \le R)$ 全部替换为 $\dfrac{\sum_{i=L}^{R}A_i}{R - L + 1}$。
请你计算操作后可以得到的不同序列的数量。
$\large{数据范围}$
- $1 \le N \le 10^5$
- $1 \le A_i \le 30$
- 所有输入数据均为整数
- 选择一个二元组 $(L, R)$,其中 $1 \le L \le R \le N$;
- 将序列中的元素 $A_i (L \le i \le R)$ 全部替换为 $\dfrac{\sum_{i=L}^{R}A_i}{R - L + 1}$。
请你计算操作后可以得到的不同序列的数量。
$\large{数据范围}$
- $1 \le N \le 10^5$
- $1 \le A_i \le 30$
- 所有输入数据均为整数
输入格式
对于每个测试文件,格式如下:
$\tt{N}$
$\tt{A_1\ A_2\ \ldots A_N}$
输出格式
对于每个测试用例,在单独的一行中输出答案。
输入输出样例
输入 #1
4 1 3 2 4
输出 #1
5
输入 #2
3 6 6 6
输出 #2
1
输入 #3
16 7 7 10 2 1 9 7 1 1 6 10 5 6 7 8 4
输出 #3
116
$\bf{样例\ 1:}$
1. 令 $(L, R) = (1, 1)$,我们可以得到序列 $(1, 3, 2, 4)$。
2. 令 $(L, R) = (1, 2)$,我们可以得到序列 $(2, 2, 2, 4)$。
3. 令 $(L, R) = (2, 3)$,我们可以得到序列 $(1, 2.5, 2.5, 4)$。
4. 令 $(L, R) = (3, 4)$,我们可以得到序列 $(1, 3, 3, 3)$。
5. 令 $(L, R) = (1, 4)$,我们可以得到序列 $(2.5, 2.5, 2.5, 2.5)$。
所以经过操作后,我们可以得到 $5$ 个不同的序列。
$\bf{样例\ 2:}$
令 $(L, R) = (1, 1)$,我们可以得到序列 $(6, 6, 6)$。
我们无法通过选择其他二元组进行操作得到与其不同的序列,所以答案为 $1$。
1. 令 $(L, R) = (1, 1)$,我们可以得到序列 $(1, 3, 2, 4)$。
2. 令 $(L, R) = (1, 2)$,我们可以得到序列 $(2, 2, 2, 4)$。
3. 令 $(L, R) = (2, 3)$,我们可以得到序列 $(1, 2.5, 2.5, 4)$。
4. 令 $(L, R) = (3, 4)$,我们可以得到序列 $(1, 3, 3, 3)$。
5. 令 $(L, R) = (1, 4)$,我们可以得到序列 $(2.5, 2.5, 2.5, 2.5)$。
所以经过操作后,我们可以得到 $5$ 个不同的序列。
$\bf{样例\ 2:}$
令 $(L, R) = (1, 1)$,我们可以得到序列 $(6, 6, 6)$。
我们无法通过选择其他二元组进行操作得到与其不同的序列,所以答案为 $1$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?