[CSP-S2019] 划分
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
2048 年,第三十届 CSP 认证的考场上,作为选手的小明打开了第一题。这个题的样例有 组数据,数据从 编号, 号数据的规模为 。
小明对该题设计出了一个暴力程序,对于一组规模为 的数据,该程序的运行时间为 。然而这个程序运行完一组规模为 的数据之后,它将在任何一组规模小于 的数据上运行错误。样例中的 不一定递增,但小明又想在不修改程序的情况下正确运行样例,于是小明决定使用一种非常原始的解决方案:将所有数据划分成若干个数据段,段内数据编号连续,接着将同一段内的数据合并成新数据,其规模等于段内原数据的规模之和,小明将让新数据的规模能够递增。
也就是说,小明需要找到一些分界点 ,使得
$$\sum_{i=1}^{k_1} a_i \leq \sum_{i=k_1+1}^{k_2} a_i \leq \cdots \leq \sum_{i=k_p+1}^{n} a_i $$注意 可以为 且此时 ,也就是小明可以将所有数据合并在一起运行。
小明希望他的程序在正确运行样例情况下,运行时间也能尽量小,也就是最小化
$$(\sum_{i=1}^{k_1} a_i)^2 + (\sum_{i=k_1+1}^{k_2} a_i)^2 + \cdots + (\sum_{i=k_p+1}^{n} a_i)^2 $$小明觉得这个问题非常有趣,并向你请教:给定 和 ,请你求出最优划分方案下,小明的程序的最小运行时间。
输入格式
由于本题的数据范围较大,部分测试点的 将在程序内生成。
第一行两个整数 。 的意义见题目描述, 表示输入方式。
- 若 ,则该测试点的 直接给出。输入文件接下来:第二行 个以空格分隔的整数 ,表示每组数据的规模。
- 若 ,则该测试点的 将特殊生成,生成方式见后文。输入文件接下来:第二行六个以空格分隔的整数 。接下来 行中,第 行包含三个以空格分隔的正整数 。
对于 的 23~25 号测试点, 的生成方式如下:
给定整数 ,以及 个三元组 。
保证 。若 ,则 $\forall 3 \leq i \leq n, b_i = (x \times b_{i−1} + y \times b_{i−2} + z) \mod 2^{30}$。
保证 。令 ,则 还满足 有 。
对于所有 ,若下标值 满足 ,则有
$$a_i = \left(b_i \mod \left( r_j − l_j + 1 \right) \right) + l_j $$上述数据生成方式仅是为了减少输入量大小,标准算法不依赖于该生成方式。
输出格式
输出一行一个整数,表示答案。
5 0
5 1 7 9 9
247
10 0
5 6 7 7 4 6 2 13 19 9
1256
10000000 1
123 456 789 12345 6789 3
2000000 123456789 987654321
7000000 234567891 876543219
10000000 456789123 567891234
4972194419293431240859891640
提示
【样例 1 解释】
最优的划分方案为 。由 知该方案合法。
答案为 。
虽然划分方案 对应的运行时间比 小,但它不是一组合法方案,因为 。
虽然划分方案 合法,但该方案对应的运行时间为 ,比 大。
【样例 2 解释】
最优的划分方案为 $\{5\}, \{6\}, \{7\}, \{7\}, \{4,6,2\}, \{13\}, \{19,9\}$。
【数据范围】
测试点编号 | |||
---|---|---|---|
0 | |||
1 |
对于的所有测试点,保证最后输出的答案
所有测试点满足:,,,,,。
CSP-S 重做
- Status
- Done
- Rule
- IOI
- Problem
- 26
- Start at
- 2024-11-7 16:30
- End at
- 2024-11-17 16:30
- Duration
- 240 hour(s)
- Host
- Partic.
- 6