ZUFEOJ
Home
ProblemSet
Source/Category
Contest
Status
Ranklist
F.A.Qs
Login
Register
7603: 弯曲筷子
内存限制:128 MB
时间限制:1 S
题面:Markdown
评测方式:文本比较
上传者:
提交:4
通过:1
提交
提交记录
统计
Web Board
题目描述
食堂里有 $n$ **支**筷子($n$ 为偶数),由于多次使用,每支筷子都有不同程度的弯曲,这让小 x 难以使用。但当两支筷子的弯曲程度相近时,使用起来会更舒适。具体来说,使用两支弯曲度分别为 $a$ 和 $b$ 的筷子时,其**不舒适度**为 $\left(a - b\right)^2$。 小 x 希望从所有筷子中选出若干**双**,使得不舒适度之和最小。特别地,小 x 对其中 $m$ 支筷子情有独钟,希望选出的筷子中包含这 $m$ 支。 --- 为了防止输入过大带来的常数问题,`C++` 选手请尽量使用关闭流同步的 `std::cin` 和 `std::cout` 实现输入输出,否则可能出现因读入输出问题导致的 TLE 等。 ```cpp int main(){ std::ios::sync_with_stdio(0); std::cin.tie(0); // your code return 0; } ```
输入格式
第一行一个整数 $ T $ $ \left(1 \leq T \leq 1000\right) $,表示测试数据组数。 每组输入数据的第一行包含两个正整数 $ n $ 和 $ m $ $ \left(2 \leq 2 \times m \leq n \leq 3 \times 10^5\right) $,分别表示筷子数量和必选筷子数量,保证 $n$ 为偶数。 第二行包含 $ n $ 个整数 $ c_1, c_2, \dots, c_n $ $ \left(1 \leq c_i \leq 10^6\right) $,表示筷子弯曲程度。 第三行包含 $ m $ 个整数 $ a_1, a_2, \dots, a_m $ $ \left(1 \leq a_i \leq n\right) $,表示必选的筷子编号。 保证所有测试数据的 $ n $ 之和不超过 $ 10^6 $。
输出格式
对于每组测试数据,输出一行一个整数表示最小的不舒适度之和。
输入样例
复制
2 4 2 5 10 6 9 2 3 8 3 3 6 1 9 5 6 5 8 2 4 5
输出样例
复制
2 1
分类标签
2025杭电春季赛3