CCF GESP 2026年6月认证 C++ 8级

编程题
共 2 道 每题 25 分 共计 50 分
第 1 题
线网建设
时间限制:1s 内存限制:512MB

题目描述

A 市有 $n$ 座基站需要通过线网互相连接。第 $i$ 座基站位于二维平面上坐标 $(x_{i},y_{i})$ 处。

第 $i$ 座基站与第 $j$ 座基站之间的距离定义为 $\sqrt{(x_{i}−x_{j})^{2}+(y_{i}−y_{j})^{2}}$。

如果两座基站之间的距离不超过给定的整数 $l$,那么可以修建连接这两座基站的线路,线路长度为基站间的距离。

如果从一座基站出发,经过一系列线网中的线路可以到达另一座基站,则称这两座基站是互相连接的。

请问使得 $n$ 座基站两两之间都互相连接,需要修建的线路总长度最小是多少?如果不能修建满足条件的线网,则输出 Impossible

输入格式

第一行,两个正整数 $n,l$,分别表示基站数量与线路长度上限。

接下来 $n$ 行,每行两个整数 $x_{i},y_{i}$,表示基站的坐标。

输出格式

输出一行。如果能修建满足条件的线网,则输出需要修建的最小线路总长度,保留两位小数。否则输出 Impossible

样例说明

样例 1

输入:
4 2
1 0
-1 -1
0 0
1 1
输出:
3.41

样例 2

输入:
4 1
1 0
-1 -1
0 0
1 1
输出:
Impossible

数据范围

对于 40% 的测试点,保证 $1≤n≤100$。

对于所有测试点,保证 $1≤n≤500$,$1≤l≤100$,$−100≤x_{i},y_{i}≤100$。

第 2 题
堆石子
时间限制:1s 内存限制:512MB

题目描述

有 $m$ 堆石子,编号为 $1,2,⋯,m$,其石子数量分别记为 $a_{1},a_{2},⋯,a_{m}$。

现在要求第 1 堆石子恰有 $n$ 个(即 $a_{1}=n$),并且此后每堆石子的数量严格小于前一堆,即 $a_{i}<a_{i−1}​ (2≤i≤m)$。此外,每堆至少需要有一个石子,即 $a_{i}​≥1 (1≤i≤m)$。

在总石子数量不设限制的情况下,给定 $m≥2,n≥1$,有多少个满足要求的石子堆放方案?

两个方案不同,当且仅当,两个方案中至少有一堆石子数量不同。

如果不存在满足要求的方案,输出 0。由于方案数可能很大,请输出方案数对 $10^{9}+7$ 取模后的结果。

输入格式

输入一行两个正整数 $m$ 和 $n$。

输出格式

输出一个整数,表示总方案数对 $10^{9}+7$ 取模后的结果。

样例说明

样例 1

输入:
3 5
输出:
6
样例解释:

有(5,4,3),(5,4,2),(5,4,1),(5,3,2),(5,3,1)和(5,2,1)共计6种方案。

数据范围

编程题部分已到底了。