正解:树形$dp$

解题报告:

传送门$QwQ$.

考虑设$f_i$表示点$i$的子树内的拓扑序排列方案数有多少个.

发现这样不好合并儿子节点和父亲节点.于是加一维,设$f_{i,j}$表示点$i$的子树中点$i$在拓扑序中排名为$j$的拓扑序排列方案数有多少个$QwQ$

然后说下儿子节点$x$和父亲节点$y$的合并,就枚举下点$y$前面有多少个原属于$y$的点有多少个原属于$x$的点.

若要求是$x>y$,就$f_{y,k}=\sum_{i=1}^{k} \sum_{j=k-i+1}^{size_x} f_{y,i}\cdot f_{x,j}\cdot C(k-1,i-1)\cdot C(size_u+size_v-k,size_u-i)$(昂这个$size$是当前的$size$鸭$QwQ$.

大概解释下,,,?就枚举原$y$的排名是$i$,原$x$的排名是$j$,目标状态$y$的排名是$k$.

然后$y$之前有$C(k-1,i-1)$的方案数,$y$之后有$C(size_u+size_v-k,size_u-i)$的方案数,总的就$f_{y,i}\cdot f_{x,j}\cdot C(k-1,i-1)\cdot C(size_u+size_v-k,size_u-i)$.然后关于范围这个随便算下就星趴,,,?首先$i$是显然的?然后$j$有因为要求$x$在$y$后面所以就要$j-1\geq k-i,j\geq k-i+1$,$over$

$x<y$差不多,不说了$QwQ$

然后发现复杂度不太可,考虑咋优化$QwQ$.

发现转移式中关于$j$只出现了一个$f_{x,j}$.所以直接前缀和优化掉就完事$QwQ.$

然后就欧克了,$over$

对了这题有道很相似的题改下就双倍经验辣,这儿$QwQ$

洛谷$P4099\ [HEOI2013]\ SAO\ dp$的更多相关文章

  1. 洛谷 P4099 - [HEOI2013]SAO(树形 dp)

    题面传送门 题意: 有一个有向图 \(G\),其基图是一棵树 求它拓扑序的个数 \(\bmod (10^9+7)\) \(n \in [1,1000]\) 如果你按照拓扑排序的方法来做,那恐怕你已经想 ...

  2. 洛谷P4099 [HEOI2013]SAO(树形dp)

    传送门 HEOI的题好珂怕啊(各种意义上) 然后考虑树形dp,以大于为例 设$f[i][j]$表示$i$这个节点在子树中排名第$j$位时的总方案数(因为实际只与相对大小有关,与实际数值无关) 我们考虑 ...

  3. P4099 [HEOI2013]SAO

    P4099 [HEOI2013]SAO 贼板子有意思的一个题---我()竟然没看题解 有一张连成树的有向图,球拓扑序数量. 树形dp,设\(f[i][j]\)表示\(i\)在子树中\(i\)拓扑序上排 ...

  4. P4099 [HEOI2013]SAO(树形dp)

    P4099 [HEOI2013]SAO 我们设$f[u][k]$表示以拓扑序编号为$k$的点$u$,以$u$为根的子树中的元素所组成的序列方案数 蓝后我们在找一个以$v$为根的子树. 我们的任务就是在 ...

  5. [BZOJ3167][P4099][HEOI2013]SAO(树形DP)

    题目描述 Welcome to SAO ( Strange and Abnormal Online).这是一个 VR MMORPG, 含有 n 个关卡.但是,挑战不同关卡的顺序是一个很大的问题. 有 ...

  6. 洛谷 4099 [HEOI2013]SAO——树形DP

    题目:https://www.luogu.org/problemnew/show/P4099 结果还是看了题解才会…… 关键是状态,f[ i ][ j ] 表示 i 子树. i 号点是第 j 个出现的 ...

  7. luogu P4099 [HEOI2013]SAO

    传送门 吐槽题目标题 这个依赖关系是个树,可以考虑树型dp,设f_i表示子树i的答案 因为这是个序列问题,是要考虑某个数的位置的,所以设\(f_{i,j}\)表示子树i构成的序列,i在第j个位置的方案 ...

  8. 【做题记录】 [HEOI2013]SAO

    P4099 [HEOI2013]SAO 类型:树形 \(\text{DP}\) 这里主要补充一下 \(O(n^3)\) 的 \(\text{DP}\) 优化的过程,基础转移方程推导可以参考其他巨佬的博 ...

  9. 3167: [Heoi2013]Sao [树形DP]

    3167: [Heoi2013]Sao 题意: n个点的"有向"树,求拓扑排序方案数 Welcome to Sword Art Online!!! 一开始想错了...没有考虑一个点 ...

随机推荐

  1. android service中stub作用是什么?

    AIDL(android 接口描述语言)是一个IDL语言,它可以生成一段代码,可以使在一个android设备上运行的两个进程使用内部通信进程进行交互.如果你需要在一个进程中(例如:在一个Activit ...

  2. Oracle函数——COALESCE

    COALESCE 含义:COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值 ...

  3. oracle函数 CONCAT(c1,c2)

    [功能]连接两个字符串 [参数]c1,c2 字符型表达式 [返回]字符型 同:c1||c2 [示例] select concat('010-','88888888')||'转23' 高乾竞电话 fro ...

  4. 模板—BSGS

    #include<iostream> #include<cstdio> #include<cmath> #include<map> #define LL ...

  5. axios用headers传参,设置请求头token

    新建一个配置文件http.js // 导入axios import axios from 'axios'; // 全局配置默认路由 axios.defaults.baseURL = 'http://1 ...

  6. 随机线性网络编码的C语言实现,实现可靠传输:实现篇(2)

    伽罗华域(2^8)乘除法的编程实现

  7. Fragment学习(二): 管理Fragment和Fragment通讯

    一. 管理Fragment 首先,如果你想在Android3.0及以下版本使用Fragment,你必须引用android-support-v4.jar这个包 然后你写的activity不能再继承自Ac ...

  8. Python--day29--configparser模块(配置)(不熟,以后要找时间重学)

  9. Java中方法的格式

    [修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……]) {             执行语句;     [return 返回值;]//需要的话 } 参数列表(参数的类型 ...

  10. [转]在Windows中安装Memcached

    Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. Memcached最开始是作为 ...