luogu#P11944. [KTSC 2025] 路网维修 / roadwork
[KTSC 2025] 路网维修 / roadwork
题目背景
版权信息:译自 2025年度 国际情报 올림피아드 (Olympiad) 代表学生 选拔考试 R1T3。[CC BY-NC-SA 4.0]
题目描述
有一条自西向东流的大河,河的南北两岸各有 个村庄。北岸的村庄自西向东编号 ,南岸的村庄自西向东编号 。
有 座桥梁,每座桥梁连接一个南岸村庄和北岸村庄。
具体地说,给定一个长为 的字符串 ,字符集为 。
- 第 座桥连接 ;
- ,设第 座桥连接 :
- 若 ,则第 座桥连接 ;
- 若 ,则第 座桥连接 。
数据保证, 中恰好有 个 和 个 ,由此可以导出以下性质:
- 不存在一条座桥梁,连接了不存在的村庄;
- 任意两座村庄均通过桥梁连通;
- 第 座桥(即最后一座桥)连接 。
现在要维修若干座桥梁,前提是:
- 任意一座村庄至多只有一条桥梁被维修。
计算:
- 在满足以上条件的前提下,至多能维修多少座桥梁。
- 在满足 1 的前提下,有多少个不同的维修方案。
两个方案不同,当且仅当选择桥梁的集合不同。只需要将第二问的答案对 取模。
特别地,如果你只回答第一问,也可以得到部分分,详见【计分方式】。
实现细节
你不需要,也不应该实现 main
函数。
你应当实现以下的函数:
array<int, 2> roadwork(string s);
s
:长度为 的字符串 。- 返回一个数组,第一个元素表示至多能维修多少座桥梁;第二个元素表示方案数对 取模后的结果(落在区间 内)。
- 该函数将被调用 次,其中 为测试数据组数。
输入格式
本题单个测试点内有多组测试数据。
Sample Grader 输入格式如下:
第一行,一个正整数 。
接下来 行,每行一个正整数 和一个长度为 的字符串 。
输出格式
Sample Grader 输出 行,每行两个整数,表示对应数据的答案。
1
2 AB
2 1
1
7 AABBAABBAABB
6 4
提示
样例交互
样例交互
roadwork("AB");
显然至多能维修两座桥梁(),且这是唯一的方案。所以返回 。
如果返回 等,将得到 的分数。
样例交互
roadwork("AABBAABBAABB")
至多维修 座桥梁,有 种方式。所以返回 。
数据范围
- ;
- ;
- 中恰好有 个 和 个 。
子任务
子任务 为样例。
子任务编号 | 得分 | |
---|---|---|
计分方式
如果你正确回答第一问,可以获得 的分数。
在此前提下,如果你正确回答第二问,可以额外获得 的分数。