D. 构造题(construct)

    传统题 1000ms 256MiB

构造题(construct)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

小可可需要你构造一个 nn 个点 mm 条边且无重边的有向无环图(节点从 11 开始标号),其中点 11 的入度和点 nn 的出度必须为 00。并且,对于 0p0 \sim p 中的每一个整数 ii,都能通过保留图中的一部分有向边使得从点 11 到点 nn 的不同路径方案数为 ii。请给出你构造的有向无环图以及对于每一个 ii 需要保留哪些边。

答案不唯一,因此你只需输出任意一种可行方案,详见输出格式。你可以自己指定 n,mn, m 的大小,但必须保证 n24,m65n \le 24, m \le 65

一条经过 P|P| 个点的,从点 11 到点 nn 的路径 PP 可以描述为一个长度为 P|P| 的序列 (P1,P2,,PP)(P_1, P_2, \dots, P_{|P|}),其中 P1=1,PP=nP_1 = 1, P_{|P|} = n,并且对于 i=1,2,,P1i = 1, 2, \dots, |P| - 1,图中都存在 PiPi+1P_i \to P_{i+1} 的有向边。

两条路径 A,BA, B 不同,当且仅当 AB|A| \ne |B|,或者存在一个 1A1 \sim |A| 中的正整数 ii,使得 AiBiA_i \ne B_i

输入格式

输入仅有一行一个正整数 pp

输出格式

  • 第一行输出两个正整数 n,mn, m 表示你构造的有向无环图的点数和边数。
  • 接下来 mm 行,第 ii 行输出两个正整数 u,vu, v 表示图中的第 ii 条有向边 uvu \to v
  • 接下来 p+1p+1 行,第 ii 行输出一个长度为 mm 的仅由 0101 构成的字符串,表示要使得点 11 到点 nn 的不同路径方案数为 i1i-1 的情况下选择保留哪些边,从左到右第 jj 个字符若为 11 表示保留第 jj 条边,00 表示不保留。

样例输入 1

3

样例输出 1

5 6
1 2
2 5
1 3
3 5
1 4
4 5
000000
110000
111100
111111

说明

样例解释

样例中 p=3p=3。下页图是样例输出中构造出的一种可行的图。

当六条边全部不选的时候,显然点 11 无法到达点 55,方案数为 00

仅保留第 1,21, 2 条边时,点 11 到点 55 仅有一条路径可选 (1251 \to 2 \to 5),方案数为 11

保留第 1,2,3,41, 2, 3, 4 条边时,点 11 到点 55 有两条路径可选 (1251 \to 2 \to 51351 \to 3 \to 5),方案数为 22

所有边全部保留时,点 11 到点 55 有三条路径可选 (125,1351 \to 2 \to 5, 1 \to 3 \to 51451 \to 4 \to 5),方案数为 33

因此,这组构造方案是合法的。

数据范围

对于所有数据,保证 p75000p \le 75000

本题共计二十个测试点,每个测试点的输入是已知的(详见下表)。只有你的构造合法,并且满足 n24,m65n \le 24, m \le 65 才可获得该测试点的分数,否则该测试点不得分。

测试点编号 p=p= 测试点编号 p=p= 测试点编号 p=p= 测试点编号 p=p=
11 55 66 300300 1111 60006000 1616 3500035000
22 1010 77 600600 1212 80008000 1717 4500045000
33 2020 88 10001000 1313 1000010000 1818 5500055000
44 5050 99 20002000 1414 1500015000 1919 6500065000
55 100100 1010 40004000 1515 2500025000 2020 7500075000

温馨提示

  • 本题 pp 较大时输出量较大,因此请使用合适的方式输出。你也应当使用恰当的方法打开输出文件以防止电脑崩溃。

  • 本题下发校验器 checker.cpp 供你测试你的构造是否合法。下发的校验器与最终评测中使用的校验器有所不同,你也无需关心其中的具体内容。请将本题下发文件

  • checker.cpp 解压缩到你的本题程序所在文件夹中,并在你的本题程序所在文件夹中右键单击,选择菜单中的“在终端打开”,然后使用以下命令编译 checker.cppg++ checker.cpp -o checker -O2 -std=c++14

  • 随后用以下命令测试你的输出: ./checker construct.in construct.out

  • 成功运行指令后,如果你的构造合法,你将会看到 Accepted,否则你会看到 Wrong answer 以及详细错误信息。

安徽科大国创杯

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-4-20 18:30
结束于
2026-4-29 2:30
持续时间
200 小时
主持人
参赛人数
14