题目名称 | 549. [HAOI 2011]问题C |
---|---|
输入输出 | c.in/out |
难度等级 | ★★★ |
时间限制 | 5000 ms (5 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | 王者自由 于2011-04-27加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:45, 提交:84, 通过率:53.57% | ||||
stdafx.h | 100 | 2.060 s | 1.76 MiB | C++ |
mikumikumi | 100 | 2.085 s | 1.78 MiB | C++ |
神利·代目 | 100 | 2.104 s | 1.76 MiB | C++ |
馒头 | 100 | 2.106 s | 2.76 MiB | C++ |
/k | 100 | 2.115 s | 1.78 MiB | C++ |
Dijkstra | 100 | 2.180 s | 1.70 MiB | C++ |
了反取字名我擦 | 100 | 2.196 s | 1.67 MiB | C++ |
<蒟蒻>我要喝豆奶 | 100 | 2.235 s | 2.21 MiB | C++ |
vampire | 100 | 2.301 s | 1.78 MiB | C++ |
KCkwok | 100 | 2.357 s | 1.78 MiB | C++ |
关于 问题C 的近10条评论(全部评论) | ||||
---|---|---|---|---|
...
|
给 $n$ 个人安排座位,先给每个人一个 $1 \sim n$ 的编号,设第 $i$ 个人的编号为 $a_i$(不同人的编号可以相同)。
接着从第一个人开始,大家依次入座,第 $i$ 个人来了以后尝试坐到 $a_i$,如果 $a_i$ 被占据了,就尝试 $a_i+1$,$a_i+1$ 也被占据了的话就尝试 $a_i+2$……,如果一直尝试到第 $n$ 个都不行,该安排方案就不合法。
然而有 $m$ 个人的编号已经确定(他们或许贿赂了你的上司...),你只能安排剩下的人的编号,求有多少种合法的安排方案。
由于答案可能很大,只需输出其除以 $M$ 后的余数即可。
第一行一个整数 $T$,表示数据组数。
对于每组数据,第一行有三个整数,分别表示 $n$、$m$、$M$。
若 $m$ 不为 $0$,则接下来一行有 $m$ 对整数,$p_1$、$q_1$,$p_2$、$q_2$,..., $p_m$、$q_m$,其中第 $i$ 对整数 $p_i$、$q_i$ 表示第 $p_i$ 个人的编号必须为 $q_i$。
对于每组数据输出一行,若是有解则输出 `$YES$`,后跟一个整数表示方案数 $\bmod M$,注意,`$YES$` 和数之间只有一个空格,否则输出 `$NO$`。
2 4 3 10 1 2 2 1 3 1 10 3 8882 7 9 2 9 5 10
YES 4 NO
对于 $30\%$ 的数据满足:$1 ≤ n ≤ 10$;
对于 $100\%$ 的数据,保证
- $1 \leq T \leq 10$。
- $1 \leq n \leq 300$, $0 \leq m \leq n$, $2 \leq M \leq 10^9$。
- $1 \leq p_i$、$q_i \leq n$。
- $p_i$ 互不相同。