uoj#P259. 子集计数问题
子集计数问题
给定无向图 $G=(V,E)$,$\lvert V\rvert=n$,$\lvert E\rvert=m$,$V$ 中的点编号为 $1,2,...,n$。求有多少个子集 $V'\subseteq V$ 满足 $\lvert V'\rvert=k$ 且 $\forall (u,v)\in E,u\not\in V'\lor v\not\in V'$。由于答案可能很大,只需输出答案对 $p$ 取模的结果。
输入格式
本题为提交答案题。所有输入数据 subset1.in ~ subset10.in 见输入数据下载。
输入第 $1$ 行包含 $4$ 个用空格分隔的正整数 $n, m, k, p$,分别表示 $\lvert V \rvert, \lvert E \rvert$,要求的 $\lvert V' \rvert$ 的大小以及模数。
随后 $m$ 行,每行包含 $2$ 个用空格分隔的正整数 $a_i$,$b_i$,描述 $G$ 中的边 $(a_i,b_i)\in E$。
输出格式
针对给定的 $10$ 个输入文件 subset1.in ~ subset10.in,你需要分别提交你的输出文件 subset1.out ~ subset10.out。
输出文件共 $1$ 行,包含 $1$ 个整数,表示子集 $V'$ 的个数对 $p$ 取模的值。
6 9 2 10000
1 2
1 3
1 4
4 3
2 5
5 6
3 5
3 6
6 4
6
共有 $6$ 个这样的子集 $V'$,分别是:$\{1,5\}$,$\{1,6\}$,$\{2,3\}$,$\{2,4\}$,$\{2,6\}$,$\{4,5\}$。
17 16 5 10000
1 2
1 3
2 4
2 5
3 6
3 7
5 8
5 9
7 10
7 11
8 12
8 13
10 14
10 15
12 16
15 17
1528
评分方式
本题共有 $10$ 个测试点,每个测试点都有一定分值。对于每个测试点,如果选手的输出与标准答案一致,则得到该测试点的分值,否则不得分。每个测试点的分值由下表给出:
测试点编号 | 分值 | 测试点编号 | 分值 |
---|---|---|---|
1 | $5$ | 6 | $11$ |
2 | $6$ | 7 | $9$ |
3 | $14$ | 8 | $13$ |
4 | $8$ | 9 | $7$ |
5 | $12$ | 10 | $15$ |
如何测试你的输出
在终端中先切换到该试题的目录下:(windows用户请使用cmd)
cd subset
我们提供 checker 这个工具来测试你的输出文件是否正确。使用这个工具的方法是,在终端中运行
./checker <case_no>
其中 case_no
是测试数据的编号。例如
./checker 3
将测试 subset3.out 是否正确。(windows用户请使用 checker 3
)
在你调用这个程序后,checker 将根据你给出的输出文件给出测试的结果。
来源
WrongAnswer