解题思路
我们要从序列 [1,n] 中选出 k 个严格递增的下标 (x1<⋯<xk),并满足相邻差 ≥L。
关键等价变换(抽空法 / 间隔消元):
对每个被选下标“挤掉”它之前必须预留的 (L−1) 个空位:
yi=xi−(i−1)(L−1)(1≤i≤k)
P3861.组合问题(二):距离限制
题面描述
给定三个整数 n,k,L。从序列 {1,2,…,n} 中选择 k 个不同的下标 1≤x1<x2<⋯<xk≤n,并满足相邻下标的差都至少为 L,即
xi+1−xi≥L(对所有 1≤i<k)。
求满足条件的方案数。
输入输出
输入:
一行三个整数 n,k,L。
输出:
一行输出一个整数,表示满足条件的方案数。
数据范围
- 1≤n≤60
- 0≤k≤n
- 1≤L≤n
样例
输入
3 2 1
输出
3
说明
从 [1,2,3] 中选 2 个且相邻下标差至少 1,方案为 [1,2],[1,3],[2,3]。
输入
5 3 2
输出
1
说明
相邻下标差至少为 2,只能选 [1,3,5]。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写