#P17140. [NOI 2026] 线段
[NOI 2026] 线段
题目描述
小 有 条包含于 的线段,其中第 ()条线段为 ()。
小 认为过于复杂的线段相交关系不够优美。对于每一个线段集合 ,小 定义 是 优美 的,当且仅当满足如下要求:
- 构造一个顶点集合与 对应的图。顶点 与顶点 之间存在一条边,当且仅当线段 与线段 相交,即存在 ,满足 且 。称 是 优美 的,当且仅当构造出的图恰好为一棵树。
小 想知道有多少线段集合是优美的,因此他给定了一个正整数 ()。你需要计算,对于每个 ,有多少个大小为 的集合是优美的。
由于答案可能较大,只需求出答案对 取模后的结果。
【测试程序方式】
选手不需要,也不应该实现 main 函数。
选手需要确保提交的程序源文件包含头文件 segment.h,即在程序开头加入以下代码:
#include "segment.h"
选手需要在提交的程序源文件 segment.cpp 中实现以下两个函数:
void init(int c, int t);
- 分别表示测试点编号与测试数据组数。 表示该测试点为样例。
- 对于每个测试点,该函数会在程序开始运行时被评测程序调用恰好一次。
std::vector<int> segment(int n, int m, int k, std::vector<int> l, std::vector<int> r);
- 分别表示线段的数量、坐标范围上限及需要计算的集合大小上限。
- 分别表示每条线段的左端点与右端点。
- 该函数需要返回一个长度 恰好 为 的序列 ,其中 ,()表示大小为 的优美集合数量对 取模后的结果。
- 对于每个测试点,该函数会被评测程序调用恰好 次。
本试题目录下的 template_segment.cpp 是提供的示例代码,选手可参考并实现自己的代码。
输入格式
选手可以在本题目录下使用如下命令编译得到可执行文件:
g++ grader.cpp segment.cpp -o segment -O2 -std=c++14 -static
对于编译得到的可执行文件 segment:
- 可执行文件将从标准输入读入以下格式的数据:
- 第一行包含两个非负整数 。
- 接下来依次为每组测试数据。对于每组测试数据:
- 第一行包含三个正整数 。
- 第 ()行包含两个正整数 。
- 可执行文件将输出以下格式的数据至标准输出:
- 对于每组测试数据,输出一行 个非负整数 。
输出格式
无
输入输出样例 #1
输入 #1
0 3
3 3 3
1 2
2 3
1 3
4 5 4
1 2
2 3
3 4
4 5
4 2 3
1 2
1 2
1 2
1 1
输出 #1
3 3 0
4 3 2 1
4 6 0
说明/提示
【样例 解释】
对于第一组测试数据:
- 大小为 的集合有 ,均是优美的。
- 大小为 的集合有 ,均是优美的。
- 大小为 的集合有 ,构造出的图是一个三元环,不是优美的。
因此答案分别为 。
对于第二组测试数据:
- 大小为 的集合中,所有 个集合均是优美的。
- 大小为 的集合中, 是优美的。
- 大小为 的集合中, 是优美的。
- 大小为 的集合 是优美的。 因此答案分别为 。
【样例 】
见选手目录下的 segment/segment2.in 与 segment/segment2.ans。
该样例满足测试点 的约束条件。
【样例 】
见选手目录下的 segment/segment3.in 与 segment/segment3.ans。
该样例满足测试点 的约束条件。
【样例 】
见选手目录下的 segment/segment4.in 与 segment/segment4.ans。
该样例满足测试点 的约束条件。
【样例 】
见选手目录下的 segment/segment5.in 与 segment/segment5.ans。
该样例满足测试点 的约束条件。
【样例 】
见选手目录下的 segment/segment6.in 与 segment/segment6.ans。
该样例满足测试点 的约束条件。
【样例 】
见选手目录下的 segment/segment7.in 与 segment/segment7.ans。
该样例满足测试点 的约束条件。
【数据范围】
设 为单个测试点内所有测试数据的 的和。对于所有测试数据,均有:
- ;
- ,,,;
- 对于所有 ,均有 。
::cute-table{tuack}
| 测试点编号 | 特殊性质 | ||||
|---|---|---|---|---|---|
| 无 | |||||
| ^ | |||||
| ^ | ^ | ||||
| ^ | |||||
| ^ | |||||
| 无 | |||||
| ^ | |||||
- 特殊性质 :对于所有 且 ,均有线段 不包含线段 ,即 或 。
- 特殊性质 :对于所有 ,均有线段 包含线段 ,或线段 与线段 不相交,即 、 或 。
- 特殊性质 : 条线段的全部 个端点互不相同,即 两两不同。
附件下载
segment.zip 805.24KB