A6051 | 「2017 山东一轮集训 Day1」Sim
时间限制2500ms
内存限制512MB
通过 / 提交0/0
题目描述
给定一个含 $ n $ 个正整数的数组 $ A $。现有关于它的 $ Q $ 个询问,询问有以下五种类型:
*
$$ \sum\limits_{1 \leq i < j < k \leq |S|} S_i S_j S_k \pmod {10 ^ 9 + 7} $$
*
*
*
*
数组下标从 $ 1 $ 开始,数据保证数组总是非空。
*
1 l r,令 $ S $ 为由下标范围从 $ l $ 到 $ r $ 的不同的元素构成的有序集合,你需要求出$$ \sum\limits_{1 \leq i < j < k \leq |S|} S_i S_j S_k \pmod {10 ^ 9 + 7} $$
*
2 x y,将下标为 $ x $ 的元素赋值 $ y $*
3 x,将下标为 $ x $ 的元素从数组中删除*
4 z y,在下标为 $ z $ 的元素之后插入元素 $ y $(若 $ z $ 等于 $ 0 $,则在数组最前端插入)*
5 l r,输出下标在 $ l $ 到 $ r $ 范围内的不同元素个数数组下标从 $ 1 $ 开始,数据保证数组总是非空。
输入格式
输入数据第一行包含两个整数 $ n $ 和 $ q $,分别表示 $ A $ 的长度,以及询问的数量。
第二行包括 $ n $ 个整数,表示给定的数组 $ A $。
接下来的 $ q $ 行,每行包含一个询问,格式见题面。
第二行包括 $ n $ 个整数,表示给定的数组 $ A $。
接下来的 $ q $ 行,每行包含一个询问,格式见题面。
输出格式
对于每次类型 1 和类型 5 的询问,输出一行包含相应的答案。
输入输出样例
输入 #1
5 8 1 2 3 2 1 1 1 3 5 1 5 2 2 4 1 2 4 3 3 4 0 5 1 1 2 1 1 5
输出 #1
6 3 24 0 78
对于所有数据,$ 1 \leq n, q \leq 10 ^ 5; 1 \leq A_i, y \leq 10 ^ 9 + 6; 1 \leq x \leq |A|; 0 \leq z \leq |A|; 1 \leq l \leq r \leq |A| $。
另有如下互不重合的特殊数据:
* $ 10\% $,$ 1 \leq n, q \leq 100 $
* $ 20\% $,只含类型 2、5
* $ 20\% $,只含类型 1、2、5
* $ 20\% $,不含类型 1
* $ 10\% $,不含类型 5
* $ 10\% $,$ 1 \leq n, q \leq 50000 $
另有如下互不重合的特殊数据:
* $ 10\% $,$ 1 \leq n, q \leq 100 $
* $ 20\% $,只含类型 2、5
* $ 20\% $,只含类型 1、2、5
* $ 20\% $,不含类型 1
* $ 10\% $,不含类型 5
* $ 10\% $,$ 1 \leq n, q \leq 50000 $
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?