题目名称 | 2491. 天才ACM |
---|---|
输入输出 | geniusacm.in/out |
难度等级 | ★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 |
|
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:14, 提交:77, 通过率:18.18% | ||||
|
100 | 0.914 s | 15.06 MiB | C++ |
|
100 | 0.978 s | 5.33 MiB | C++ |
|
100 | 1.234 s | 12.59 MiB | C++ |
|
100 | 1.298 s | 10.31 MiB | C++ |
|
100 | 1.300 s | 15.15 MiB | C++ |
|
100 | 1.315 s | 8.05 MiB | C++ |
|
100 | 1.345 s | 8.83 MiB | C++ |
|
100 | 1.483 s | 19.39 MiB | C++ |
|
100 | 1.515 s | 8.83 MiB | C++ |
|
100 | 1.523 s | 8.83 MiB | C++ |
关于 天才ACM 的近10条评论(全部评论) | ||||
---|---|---|---|---|
回头看一下,这道题其实是一个相当经典的倍增 + 二分的模型,在 CTT2019 D1T2 也有考。不过再看到这个模型完全反应不过来。。
2024-02-18 22:57
3楼
| ||||
记得开longlong
![]()
2022-08-21 12:35
2楼
| ||||
倍增大法好!!!
2021-09-28 21:24
1楼
|
Advanced CPU Manufacturer (ACM) is one of the best CPU manufacturers in the world. 每天,该公司生产 $n$ 台 CPU 并销售到世界各地。
ACM 公司的质检部门会对生产出的 CPU 进行成组测试,对一组(若干个)CPU 进行测试的方法如下:
1. 随机从该组 CPU 中选取 $m$ 对(即 $2m$ 台),若总数不足 $2m$ 台,则选取尽量多对。
2. 对于每一对 CPU,测量它们之间的 Relative Performance Difference (RPD),并把第 $i$ 对的 RPD 记为 $D_i$。RPD 的计算方法在后面给出。
3. 该组 CPU 的 Sqared Performance Difference (SPD) 由以下公式给出:
$SPD=\sum _i D^2_i$
4. 该组 CPU 通过质检,当且仅当 $SPD \le k,$ 其中 $k$ 是给定常数。
ACM 公司生产的 CPU 性能很好,而质检部门制定的标准更是过于严格。通常他们把 $n$ 台 CPU 作为一整组进行测试,这导致一些性能良好的 CPU 无法通过测试,生产部门对此颇有微词。作为质检部门的领导,小 S 在不更改质检测试流程的前提下,想出了这样一个主意:如果能够把 $n$ 台 CPU 恰当地分成连续的若干段,使得每段 CPU 都能够通过成组测试,就可以解决当下的问题。
现在,小 S 已经知道了 $n$ 台各自的性能表现 $P_1,\cdots ,P_n$,两台 CPU 的 RPD 被定义为它们性能表现的差的绝对值。请你帮忙计算一下,至少把这些 CPU 分成多少段,才能使得每一段都能通过成组测试。
每个测试点包含多组数据,第一行整数 $T$ 给出数据组数。
对于每组数据,第一行三个整数 $n,m,k$,第二行 $n$ 个整数 $P_1,\cdots ,P_n$。
对于每组数据,输出一个整表示答案。
2 5 1 49 8 2 1 7 9 5 1 64 8 2 1 7 9
2 1
$1≤K≤12$
$1≤N,M≤500000$
$0≤T≤10^{18}$
$0≤Ai≤2^{20}$
《算法竞赛进阶指南》