[HEOI2013]SAO(树上dp,计数)】的更多相关文章

[HEOI2013]SAO (这写了一个晚上QAQ,可能是我太蠢了吧.) 题目说只有\(n-1\)条边,然而每个点又相互联系.说明它的结构是一个类似树的结构,但是是有向边连接的,题目问的是方案个数,那么首先想到的肯定是树上dp. 但是这题有向边,从一个点出发,不一定可以遍历整棵树.那么肯定要对每条边建反边,打个标记分类讨论. 解决了建模的问题,接下来就是怎么dp了. 容易发现这个其实就是求这个"类树形图"的拓扑排序方案数,然而我们知道拓扑排序的方案计数是个NP问题,用状压解决,这题有&…
3167: [Heoi2013]Sao 题意: n个点的"有向"树,求拓扑排序方案数 Welcome to Sword Art Online!!! 一开始想错了...没有考虑一个点的孩子可以排在父亲后... 为了能转移,给状态加一维,\(f[i][j]\)表示子树i,i排在第j位的方案数 然后,很像树形背包啊,转移枚举孩子子树中k个点在i之前,更新\(f[i][j+k]\) 严格做到每次合并复杂度为 **"已经合并大小*正要合并进去的大小",那么这个复杂度就是\(O…
题目描述 Welcome to SAO ( Strange and Abnormal Online).这是一个 VR MMORPG, 含有 n 个关卡.但是,挑战不同关卡的顺序是一个很大的问题. 有 n – 1 个对于挑战关卡的限制,诸如第 i 个关卡必须在第 j 个关卡前挑战, 或者完成了第 k 个关卡才能挑战第 l 个关卡.并且,如果不考虑限制的方向性, 那么在这 n – 1 个限制的情况下,任何两个关卡都存在某种程度的关联性.即, 我们不能把所有关卡分成两个非空且不相交的子集,使得这两个子…
BZOJ4824的强化版. 改变枚举的方案,使用前缀和进行DP优化. 然后复杂度就是$O(n^2)$了. #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,…
题意 给定 \(n\) 个节点和 \(n-1\) 个限制,每个节点有一个权值,每个限制形如:\(a_i< a_j\) ,问有多少个 \(1\) 到 \(n\) 排列满足要求. \(n\leq 1000\) . 分析 猜测复杂度为 \(O(n^2)\) ,并且应该要看成是树形结构. 定义状态 \(f_{i,j}\) 表示以 \(i\) 为根的子树内有 \(j\) 个节点权值 \(< a_i\)的合法方案数. 考虑转移,记 \(v\) 为 \(u\) 的儿子,有两种情况: \(a_u > a…
题目:https://www.luogu.org/problemnew/show/P4099 结果还是看了题解才会…… 关键是状态,f[ i ][ j ] 表示 i 子树. i 号点是第 j 个出现的方案数. 合并的时候,很重要的是去枚举孩子 v 有 k 个点放在了第 i 个点前面.这样 v 可以在的位置就根据该边是 > 还是 < 而是一个前/后缀.这样就是 n2 的了. #include<iostream> #include<cstdio> #include<c…
P4099 [HEOI2013]SAO 我们设$f[u][k]$表示以拓扑序编号为$k$的点$u$,以$u$为根的子树中的元素所组成的序列方案数 蓝后我们在找一个以$v$为根的子树. 我们的任务就是在合并这两棵树时维护$f[u][k]$ 合并时,$v$的元素可能全在点$u$的前/后面,也可能都有. 分类讨论: 1.当有$p(p\in [0,siz[v]])$个元素插入到点$u$(拓扑序)前面时 我们知道插入后点$u$的拓扑序为$k$ 那么插入前的拓扑序即为$k-p$ ∴插入前子树$u$对应的状态…
[BZOJ3167][HEOI2013]SAO(动态规划) 题面 BZOJ 洛谷 题解 显然限制条件是一个\(DAG\)(不考虑边的方向的话就是一棵树了). 那么考虑树型\(dp\),设\(f[i][j]\)表示当前点\(i\)在其子树内的排名为\(j\)的方案数. 每次考虑加入一棵子树,即考虑把\(f[v][k]\)加入到\(f[u][i]\)的贡献中. 分类讨论,如果\(v\)应当在\(u\)之前,枚举\(v\)的子树内一共有多少个点在\(u\)之前,那么假设\(u\)当前的序列长度为\(x…
P4099 [HEOI2013]SAO 贼板子有意思的一个题---我()竟然没看题解 有一张连成树的有向图,球拓扑序数量. 树形dp,设\(f[i][j]\)表示\(i\)在子树中\(i\)拓扑序上排名为\(j\)的方案数. 难就难在转移,现在有两个树\(x\)和\(y\),其中\(x\)是父亲,\(x\)的拓扑序小于\(y\)的,从\(f[x][p1],f[y][p2]\)转移到\(newf[x][p3]\):\(x\)在原序列中排名\(p1\),新序列中\(p3\):\(y\)在原序列中排名…
3167: [Heoi2013]Sao Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 96  Solved: 36[Submit][Status][Discuss] Description WelcometoSAO(StrangeandAbnormalOnline).这是一个VRMMORPG,含有n个关卡.但是,挑战不同关卡的顺序是一个很大的问题.有n–1个对于挑战关卡的限制,诸如第i个关卡必须在第j个关卡前挑战,或者完成了第k个关卡才能挑战第l…