首页 / 题库

P70040 - 构造题(construct)

通过次数3 提交次数74 内存限制 512MB 时间限制1秒

描述

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

 

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

 

一条经过 $|P|$ 个点的,从点 $1$ 到点 $n$ 的路径 $P$ 可以描述为一个长度为 $|P|$ 的序列 $(P_1,P_2,…,P_|P|)$,其中 $P_1=1,P_{|P|}=n$,并且对于 $i=1,2,…,|P|−1$,图中都存在 $P_i → P_{i+1}$的有向边。

 

两条路径 $A,B$ 不同,当且仅当 $|A|≠|B|$,或者存在一个 $1~|A|$ 中的正整数 $i$,
使得 $A_i≠B_i$。

输入

输入仅有一行一个正整数 p。

输出

第一行输出两个正整数 $n,m$ 表示你构造的有向无环图的点数和边数。


接下来 $m$ 行,第 $i$ 行输出两个正整数 $u,v$ 表示图中的第 $i$ 条有向边 $u→v$。


接下来 $p+1$ 行,第 $i$ 行输出一个长度为 $m$ 的仅由 01 构成的字符串,表示要使得点 1 到点 $n$ 的不同路径方案数为 $i−1$ 的情况下选择保留哪些边,从左到右第 $j$ 个字符若为 1 表示保留第 $j$ 条边,0 表示不保留。

样例

  • 复制
  • 复制

提示

【样例解释】
样例中 $p=3$。下图是样例输出中构造出的一种可行的图。

 

 

当六条边全部不选的时候,显然点 1 无法到达点 5,方案数为 0。


仅保留第 1,2 条边时,点 1 到点 5 仅有一条路径可选(1→2→5),方案数为 1。

保留第 1,2,3,4 条边时,点 1 到点 5 有两条路径可选(1→2→5 和 1→3→5),方案数为 2。

所有边全部保留时,点 1 到点 5 有三条路径可选(1→2→5,1→3→5 和 1→4→5),方案数为 3。

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

 

【数据范围】
对于所有数据,保证 $p≤75000$。

 

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

 

测试点编号 $p=$
1 5
2 10
3 20
4 50
5 100
6 300
7 600
8 1000
9 2000
10 4000
11 6000
12 8000
13 10000
14 15000
15 25000
16 35000
17 45000
18 55000
19 65000
20 75000

 

【温馨提示】
本题 p 较大时输出量较大,因此请使用合适的方式输出。你也应当使用恰当的方法打开输出文件以防止电脑崩溃。
本题下发校验器 checker.cpp (见附件)供你测试你的构造是否合法。下发的校验器与最终评测中使用的校验器有所不同,你也无需关心其中的具体内容。请将本题下发文件 checker.cpp 解压缩到你的本题程序所在文件夹中,并在你的本题程序所在文件夹中右键单击,选择菜单中的“在终端打开”,然后使用以下命令编译 checker.cpp:
g++ checker.cpp ‐o checker ‐O2 ‐std=c++14
随后用以下命令测试你的输出:
./checker <input.in> <output.out>
其中,<input.in> 是输入文件,<output.out> 是输出文件。实际输入时不需要尖括号。你必须严格按照要求使用指令,否则将得到 Format incorrect。
以下是从 construct.in 读入,输出到 construct.out 的指令示例:
./checker construct.in construct.out
成功运行指令后,如果你的构造合法,你将会看到 Accepted,否则你会看到 
Wrong answer 以及详细错误信息,具体如下:
1. Wrong answer [1]:你构造的图中点数过多($n>24$)。
2. Wrong answer [2]:你构造的图中边数过多($m>65$)。
3. Wrong answer [3]:你构造的图违反了点 1 入度为 0 的要求。
4. Wrong answer [4]:你构造的图违反了点 $n$ 出度为 0 的要求。
5. Wrong answer [5] u v:你构造的图中出现了重边。重边是 $u→v$。
6. Wrong answer [6]:你构造的图不是无环图。
7. Wrong answer [7] x:你没有构造出路径数恰好为 $x$ 的选边方案。
8. Wrong answer [8]:你输出的字符串长度不是$ m$。
请注意:如果你的输出不符合输出格式,校验器可能会返回无效信息或者出现运行时错误

 

 

附件

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36