Luogu P1864 [NOI2009]二叉查找树】的更多相关文章

题目 \(v\)表示权值,\(F\)表示频率. 首先我们显然可以把这个权值离散化. 然后我们想一下,这个东西它是一棵树对吧,但是我们改变权值会引起其树形态的改变,这样很不好做,所以我们考虑把它转化为序列上的问题. 我们知道这是一个treap对吧,所以它的中序遍历的数据值是递增的,我们考虑这个性质入手,把所有点按数据值从小到大排序,那么连续一段点在树上显然是一个连通块. 设\(f_{i,j,o}\)表示只考虑\([i,j]\)的点,在所有权值\(\ge o\)的情况下的最小答案.那么我们就可以枚举…
链接P1864 [NOI2009]二叉查找树 这题还是蛮难的--是我菜. 题目描述中的一大堆其实就是在描述\(treap.\),考虑\(treap\)的一些性质: 首先不管怎么转,中序遍历是确定的,所以先按照数据值排序,变成序列问题. 其次是父亲的权值比儿子小,但是这是个相对关系,所以对权值离散. 问题变成了对一个中序构造一棵树使得满足\(treap\)的第二条性质. 设\(f_{l,r,v}\)表示区间\(l,r\),最小权值大于等于\(v\)的最小代价,这种状态的好处在于我们可以快速知道一段…
问题描述 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左儿子结点的数据值大,而比它右儿子结点的数据值小. 另一方面,这棵查找树中每个结点都有一个权值,每个结点的权值都比它的儿子结点的权值要小. 已知树中所有结点的数据值各不相同:所有结点的权值也各不相同.这时可得出这样一个有趣的结论:如果能够确定树中每个结点的数据值和权值,那么树的形态便可以唯一确定.因为这样的一棵树可以看成是按照权值从小到大顺序插入结点所得到的.按照数据值排序的二叉查找树. 一个结点在树中的深度定义为…
正解:区间$dp$ 解题报告: 传送门$QwQ$ 首先根据二叉查找树的定义可知,数据确定了,这棵树的中序遍历就已经改变了,唯一能改变的就是通过改变权值从而改变结点的深度. 发现这里权值的值没有意义,所以显然离散化掉,然后设$f_{i,j,w}$表示对数据排序并确定了$[i,j]$这一区间的树的形态,所有点的权值都$\geq w$的最小代价. 考虑枚举$k\in [i,j]$为这段子树的根,转移就两种. 第一种是不改$val_k$,此时就要求$val_k\geq w$,就直接$f_{i,j,w}=…
树的中序遍历是唯一的. 按照数据值处理出中序遍历后, dp(l, r, v)表示[l, r]组成的树, 树的所有节点的权值≥v的最小代价(离散化权值). 枚举m为根(p表示访问频率): 修改m的权值 : dp(l, r, v) = min( dp(l, m-1, v) + dp(m+1, r, v) + p(l~r) + K ) 不修改(m原先权值≥v) : dp(l, r, v) = min( dp(l, m-1, Value(m)) + dp(m+1, r, Value(m)) + p(l~…
[NOI2009]二叉查找树 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 906  Solved: 630[Submit][Status][Discuss] Description Input Output 只有一个数字,即你所能得到的整棵树的访问代价与额外修改代价之和的最小值. Sample Input 4 10 1 2 3 4 1 2 3 4 1 2 3 4 Sample Output 29 HINT 输入的原图是左图,它的访问代价是1×1+…
[Luogu 1963] NOI2009 变换序列 先%Dalao's Blog 什么?二分图匹配?这个确定可以建图? 「没有建不成图的图论题,只有你想不出的建模方法.」 建图相当玄学,不过理解大约也那么奇怪. 题里面对D(x,y)的定义那一长句,一开始没看明白,但实际会发现是一个环,而对于每一个点u,符合给定距离的点都有且只有2个(v1 && v2),连u->v1 && u->v2. 对于链式前向星选手,连边的时候注意先连终点序号大的,这样才能保证遍历时从小到…
1564: [NOI2009]二叉查找树 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 879  Solved: 612[Submit][Status][Discuss] Description Input Output 只有一个数字,即你所能得到的整棵树的访问代价与额外修改代价之和的最小值. Sample Input 4 10 1 2 3 4 1 2 3 4 1 2 3 4 Sample Output 29 HINT 输入的原图是左图,它的访问代…
#include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> #define rint register int #define min(a,b) (a<b? a:b) using namespace std; struct node{int x,y,z;}a[100]; int f[100][100][100]; int…
[NOI2009]二叉查找树 [问题描述] 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左子树结点的数据值大,而比它右子树结点的数据值小.另一方面,这棵查找树中每个结点都有一个权值,每个结点的权值都比它的儿子结点的权值要小.已知树中所有结点的数据值各不相同:所有结点的权值也各不相同.这时可得出这样一个有趣的结论:如果能够确定树中每个结点的数据值和权值,那么树的形态便可以唯一确定.因为这样的一棵树可以看成是按照权值从小到大顺序插入结点所得到的.按照数据值排序的二叉查找树…