370. 【24NOIP提高组】遗失的赋值(assign) 中等
时间限制: 1.0s · 内存限制: 512MB · 通过: 0/0
小 F 有 $n$ 个变量 $x_1$, $x_2$, · · · , $x_n$。每个变量可以取 $1$ 至 $v$ 的整数取值。
小 F 在这 $n$ 个变量之间添加了 $n − 1$ 条二元限制,其中第 $i$($1 ≤ i ≤ n − 1$) 条限制为:若 $x_i = a_i$,则要求 $x_{i+1} = b_i$,且 $a_i$ 与$b_i$ 为$1$ 到$v$ 之间的整数;当 $x_i
eq a_i$ 时,第$i$ 条限制对 $x_{i+1}$ 的值不做任何约束。除此之外,小 F 还添加了 $m$ 条一元限制,其中第$j$($1 ≤ j ≤ m$) 条限制为:$x_{cj} = d_j$。
小 F 记住了所有 $c_j$ 和 $d_j$ 的值,但把所有 $a_i$ 和 $b_i$ 的值都忘了。同时小 F 知道:存在给每一个变量赋值的方案同时满足所有这些限制。
现在小 F 想知道,有多少种 $a_i, b_i$ ($1 ≤ i ≤ n − 1$) 取值的组合,使得能够确保至少存在一种给每个变量 $x_i$ 赋值的方案可以同时满足所有限制。由于方案数可能很大,小F 只需要你输出方案数对 $10^9 + 7$ 取模的结果
提交代码
C++
请先登录
登录后即可提交代码