题目描述
输入描述:
输出描述:
示例1
输入
2 1073741789
输出
31
示例2
输入
3 1073741789
输出
7954100
题目大意
给定一个有向图,其形状由 n n n单独决定。现在要求这个有向图的拓扑序有多少个。
这个图的建造:
1、有多个子图组成。
2、每个子图里有 2 ∗ n 2*n 2∗n个节点,其中 i i i节点小于等于 n n n,则 i i i向 n + i n+i n+i连边。对于一个 i i i不等于 n n n或者 2 n 2n 2n,则向 i + 1 i+1 i+1连边。
3、各个子图,对于第 i i i个子图, 1 1 1号子图的 i − 1 + n i-1+n i−1+n号点连向这个子图的 1 1 1号点, 1 1 1号子图的 i i i号点连向这个子图的 n + 1 n+1 n+1号点。
分析
首先要把图给画出来。我们以 n = 4 n=4 n=4为例。(随手爬了 P P T PPT PPT里的图[doge])
所有的子图实际上最终是连向 1 1 1号子图的,所以就像是 1 1 1号子图是架子, i ( i > 1 ) i(i>1) i(i>1)号子图是挂在架子上的肉,十分形象地命名为晒肉架图(DRG(n)),其中 n n n唯一确定了图。
那么看到这个图,我们发现如果没有图与图之间的连边,我们可以直接分开考虑。用 d p dp