CF2029G.Balanced Problem
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个长度为 n 的整数数组 a,初始时所有元素均为 0。
Kevin 可以对数组进行若干次操作。每次操作有以下两种类型之一:
- 前缀加法 —— Kevin 选择一个下标 x(1≤x≤n),然后对每个 1≤j≤x,将 aj 增加 1;
- 后缀加法 —— Kevin 选择一个下标 x(1≤x≤n),然后对每个 x≤j≤n,将 aj 增加 1。
在 KDOI 国,人们认为整数 v 是“平衡”的。因此,Iris 给了 Kevin 一个长度为 n 的数组 c,并定义数组 a 的美丽值如下:
- 初始时,令 b=0;
- 对于每个 1≤i≤n,如果 ai=v,则将 ci 加到 b 上;
- a 的美丽值即为最终的 b。
Kevin 想要在所有操作完成后,使 a 的美丽值最大。然而,他在犯困时已经进行了 m 次操作。现在,他可以再进行任意次数(可能为零)的新操作。
你需要帮助 Kevin,若他最优地进行新操作,求出最大可能的美丽值。
不过,为了防止你只是“碰运气”,Kevin 给了你一个整数 V,你需要对于每个 1≤v≤V 都解决这个问题。
输入格式
每组测试数据包含多个测试用例。输入的第一行包含一个整数 t(1≤t≤1000),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含三个整数 n、m 和 V(1≤n,m≤2⋅105,1≤V≤2000),分别表示数组 a 的长度、初始操作次数和 Kevin 给你的整数。
第二行包含 n 个整数 c1,c2,…,cn(1≤ci≤109),表示数组 c 的元素。
接下来 m 行,每行包含一个字符 op 和一个整数 x(op=L 或 R,1≤x≤n),表示第 i 次操作的类型和选择的下标。
- 如果 op=L,则该操作为对下标 x 的前缀加法;
- 如果 op=R,则该操作为对下标 x 的后缀加法。
保证:
- 所有测试用例中 n 的总和不超过 2⋅105;
- 所有测试用例中 m 的总和不超过 2⋅105;
- 所有测试用例中 V2 的总和不超过 4⋅106。
输出格式
对于每个测试用例,输出 V 个整数,表示当 v=1,2,…,V 时,Kevin 最优操作后能获得的最大美丽值。每组输出占一行。
输入输出样例
输入#1
5 3 3 2 1 2 4 L 3 R 3 L 1 3 3 2 5 1 4 L 3 R 3 L 1 5 4 5 1 1 1 1 1 L 3 R 2 L 5 L 4 10 12 9 10 9 8 7 6 5 4 3 2 1 L 2 L 4 R 4 R 4 L 6 R 8 L 3 L 2 R 1 R 10 L 8 L 1 1 1 4 1000000000 L 1
输出#1
2 6 1 9 0 1 3 5 5 0 0 0 6 25 32 35 44 51 1000000000 1000000000 1000000000 1000000000
说明/提示
在第一个测试用例中,数组 a 在初始操作后变化如下:[0,0,0]L 3[1,1,1]R 3[1,1,2]L 1[2,1,2]。
- 对于 v=1,最优策略是不进行任何新操作,美丽值为 b=c2=2;
- 对于 v=2,最优策略是在下标 2 进行一次前缀加法,之后 a 变为 [3,2,2],美丽值为 b=c2+c3=6。
在第二个测试用例中,对于 v=1 和 v=2,最优策略都是不进行任何新操作。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?