CCF GESP 2026年9月认证 C++ 7级

所有 GESP 真题,手机上也能刷 · 自动判分 · 错题自动进错题本 扫码去刷
三 编程题
共 2 道 每题 25 分 共计 50 分
第 1 题
必经之路
时间限制:1s 内存限制:512MB

题目描述

给定一张有 $n$ 个结点 $m$ 条边的有向图 $G$,$G$ 中的结点依次以 $1,2,…,n$ 编号。第 $i$ 条边($1≤i≤m$)从结点 $u_{i}$ 指向结点 $v_{i}$。

$G$ 中任一入度为 $0$ 的结点可以作为合法起点,任一出度为 $0$ 的结点可以作为合法终点。

如果 $G$ 中所有可能的从合法起点到合法终点的路径都会经过结点 $u$,则称 $u$ 是必经点。注意必经点可以为合法起点或合法终点。

请你求出 $G$ 中所有必经点的编号。

例如,在下图中合法起点有点 $1$ 与点 $2$,合法终点有点 $7$ 与点 $8$。

所有合法起点到合法终点的路径为:

  • $1→3→4→5→7$
  • $1→3→4→5→6→7$
  • $1→3→4→5→6→8$
  • $2→3→4→5→7$
  • $2→3→4→5→6→7$
  • $2→3→4→5→6→8$
  • $2→4→5→7$
  • $2→4→5→6→7$
  • $2→4→5→6→8$

因此必经点有两个,编号分别为 $4,5$。

输入格式

第一行,两个正整数 $n,m$,表示有向图 $G$ 中的结点数与边数。

接下来 $m$ 行,每行两个正整数 $u_{i},v_{i}$,表示一条从结点 $u_{i}$ 指向结点 $v_{i}$ 的有向边。

保证 $G$ 中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为 $0$ 的点)。

输出格式

第一行,一个整数,表示必经点的数量 $k$。

如果存在必经点,则第二行从小到大输出 $G$ 中所有必经点的编号。

样例说明

样例 1

输入:
8 9
1 3
2 3
3 4
4 5
5 6
6 7
6 8
2 4
5 7
输出:
2
4 5

样例 2

输入:
8 9
1 3
2 3
3 4
4 5
5 6
6 7
6 8
2 5
4 7
输出:
0

数据范围

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

对于所有测试点,保证 $1≤n≤1000$,$1≤m≤2000$。保证 $G$ 中至少有一个合法起点,至少有一个合法终点,且至少存在一条从一个合法起点到一个合法终点路径,同时不存在孤立点(即出度和入度都为 $0$ 的点)。

第 2 题
括号序列
时间限制:1s 内存限制:512MB

题目描述

对于字符串 $S$ 与 $T$,如果从 $S$ 中删除任意多个字符可以得到 $T$,那么 $T$ 是 $S$ 的子序列。换言之,$T$ 是选取 $S$ 中的若干字符按下标顺序连接而成的。两个子序列不同当且仅当所选取的下标不同。

例如 sun 是 sequence 的子序列,因为从 sequence 中删除 eq、e 和 ce 可以得到 sun;sequence 有 $2^{8}$ 个不同的子序列,其中有空字符串,也有三个不同的子序列 e,因为 sequence 的第 $2,5,8$ 个字符都为 e,分别保留这三个字符得到的子序列是不同的。

对于字符串 $S$,如果 $S$ 满足以下条件那么 $S$ 是合法括号序列:

  • $S$ 是空字符串,或者
  • $S$ 可由 (、合法括号序列、) 三者连接得到,或者
  • $S$ 可由两个合法括号序列连接得到。

例如 ()、()()、(()) 和 (()()) 都是合法括号序列。但是 (()、)( 不是合法括号序列。

给定一个长度为 $n$ 的仅包含 ( 与 ) 的字符串 $S$。请你求出 $S$ 所有 $2^{n}$ 个子序列中有多少个合法括号序列。由于答案可能很大,请你输出答案对 $10^{9}$ 取模的结果。

例如,$S$ 为 ))(()( 时共有 $3$ 个子序列是合法括号序列,分别为空字符串与两个不同的子序列 ()。

输入格式

第一行,一个正整数 $n$,表示字符串 $S$ 的长度。

第二行,长度为 $n$ 的仅包含 ( 与 ) 的字符串 $S$。

输出格式

输出一行,一个整数,表示 $S$ 的合法括号子序列的数量对 $10^{9}$ 取模的结果。

样例说明

样例 1

输入:
6
))(()(
输出:
3

样例 2

输入:
34
((((((((((((((((()))))))))))))))))
输出:
333606220

数据范围

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

对于所有测试点,保证 $1≤n≤2000$。

编程题部分已到底了。

小程序开心码未来

微信扫码,随时随地练 GESP 真题

  • 手机刷题 · 自动判分,错题自动归档到错题本
  • 绑定网站账号后,查看答案解析等权限自动同步
开心码未来小程序二维码(微信扫一扫) 微信扫一扫