1 条题解
-
0
题目大意
有一排 块木板,你需要选择一个分界点 (),使得:
- 前 块木板涂一种颜色
- 后 块木板涂另一种颜色
有 种颜色,第 种颜色可以涂 块木板(即这种颜色的油漆量足够涂 块木板)。
对于给定的 ,一种颜色能用于前 块当且仅当 ,能用于后 块当且仅当 。要求:对于每个 ,统计前 块和后 块颜色不同的方案数,并对所有 求和。
解题思路
1. 固定 时的方案数
对于固定的 ,定义:
- = 满足 的颜色数量(可用于前 块)
- = 满足 的颜色数量(可用于后 块)
如果不要求两段颜色不同,方案数为 (前段从 种中选一种,后段从 种中选一种)。
但其中包含了前后段颜色相同的情况。
前后段颜色相同时,这种颜色必须同时满足 和 ,即 。设 = 满足 的颜色数量,则前后段颜色相同的方案数就是 (因为选定一种这样的颜色,整个栅栏全涂它,对应唯一一种分配)。
因此,对于固定的 ,前后段颜色不同的方案数为:
2. 如何快速计算
将数组 从小到大排序。
- = 大于等于 的元素个数 =
- = 大于等于 的元素个数 =
- = 大于等于 的元素个数
注意到:
- 若 (即 ),则 ,此时
- 若 (即 ),则 ,此时
因此:
于是方案数简化为:
3. 最终答案
对所有 求和:
$$\text{答案} = \sum_{k=1}^{n-1} \left( x_k \cdot y_k - \min(x_k, y_k) \right) $$其中 ,。
4. 时间复杂度
- 排序 :
- 对于每个 ,两次二分查找(),共 次
- 总复杂度:
- 1
信息
- ID
- 6352
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者