#P17473. [ICPC 2018 Jiaozuo R] Can You Solve the Harder Problem?
[ICPC 2018 Jiaozuo R] Can You Solve the Harder Problem?
题目描述
给定一个序列 ,记作 。对于满足 的整数 ,定义查询
$$\displaystyle Q_{max}(l, r) = \max \lbrace a_l, a_{l + 1}, \cdots, a_r \rbrace .$$一道简单的问题可能会要求你计算所有满足 的查询的答案之和,但我们想向你展示一道更难的题目。
定义一个分类器为一个存储不重复元素的容器。分类器中的每个元素拥有两个值,分别称为键值和映射值。每个元素的键值是 的一个连续子序列,而该元素的映射值则是一个整数,表示该子序列中的最大值。分类器只存储键值互不相同的元素,这意味着重复的额外元素(具有相同键值的元素)将被从分类器中移除。
记 为 ,即 的一个连续子序列,其中 和 为满足 的整数。现在我们打算用一个分类器 来存储 的所有连续子序列 及其对应的 。请你求出 中所有映射值之和。
实际上,上文定义的正是一个 C++ 中形如 map<vector<int>, int> 或 Java 中形如 Map<ArrayList<Integer>, Integer> 的映射,因此如果你对这些数据结构运用自如,你可能会意识到我们要做的事情就是将满足 的所有可能的元素 插入分类器 中,然后要求你计算其中映射值的总和。
输入格式
输入包含多组测试数据,第一行包含一个正整数 ,表示测试数据组数,最多可达 。
对于每组测试数据,第一行包含一个整数 ,表示给定序列 的长度,满足 。
第二行包含 个正整数 ,描述序列 ,满足 。
我们保证至多有 组测试数据满足 。
输出格式
对于每组测试数据,输出一行包含 中所有映射值之和。
2
3
1 2 3
3
2 3 3
14
14
提示
在第一个样例中, 中映射值的总和等于 。
在第二个样例中, 中映射值的总和等于 。
翻译由 DeepSeek V4 Pro 完成