树
lpls1
这个作者很懒,什么都没留下…
展开
-
codeforces 1592C - Bakry and Partitioning (bitmasks,dp,dfs)
1.如果一个数列中的所有值进行异或后,得到的值为0,则说明将这个数列分为任意两组后,这两组的异或值是相等的。2.两数异或值为0<==>这两个数相等。3.若干个相同的值x进行异或,得到的结果为x或者0。奇数个x异或为x,偶数个则为0。关于本题。m组异或值为x的数,若将其中三个组合并为一个组,则可以得到m-2组异或值为x的数。执行此步,最终得到3组或2组异或值为x的数。如果最终得到的是2组,则必有且仅有所有数的异或值为0。又因为如果所有数异或值为0,则数列可以被分为任意两组都能使这两组异或值原创 2022-04-15 17:25:03 · 270 阅读 · 0 评论 -
PTA L2-004 这是二叉搜索树吗?——根据前序序列判断是否为二叉搜索树
这个题有一个非常诡异的地方。在一般的根据树结构判断是否为二叉树的问题中,这种情况:是一定要特别注意的,如果用普通的dfs判断左、右子树是否小于、大于根节点,会把这颗树误判为二叉搜索树。然而,如果仅给出一棵树的前序序列,让你判断是否是二叉搜索树,这种情况判为正确也是没问题的。因为它的前序序列,43165,还可以表示为下图的树:这颗树是二叉搜索树。如果一个序列可以认为是BST,也可以不是BS...原创 2020-01-25 17:21:16 · 320 阅读 · 0 评论 -
关于最小生成树/次小生成树的相关结论。
1.对于最小生成树的任何一条边e,将它去掉后形成两个集合u和v,则e是u,v两集合间所有边中最小的(假设不是,则可以把e去掉换成一条更小的边,从而形成一棵更小的生成树,矛盾)2.在最小生成树中的第K长边是所有生成树中第K长边的最短边。还不知道如何证明。...原创 2019-10-13 20:56:02 · 542 阅读 · 0 评论 -
Prime算法 与 Kruskal算法的时间复杂度比较
评测环境:WindowsXP,FreePascal2.40,Pentium(R) Dual-Core CPU [email protected],2G内存通过上图可以看出:1.Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。2.Prim+Heap在任何时候都有令人满意的的时间复杂度,但是代价是空间消耗极大。【以及代码很复杂>_<】3.时间复杂度并不能反映出...转载 2019-10-12 17:13:42 · 4555 阅读 · 0 评论 -
最小生成树(prim--让一棵小树长大///kruskal--让许多小树合并)
public static double prim(int n) { for(int i=1;i<=n;i++) { vis[i]=false; mincost[i]=INF; } double ans=0; mincost[1]=0; while(true) { int u=-1; for(int i=1;i<=n;i++) { i...原创 2019-10-11 21:27:01 · 233 阅读 · 0 评论 -
由前序中序序列求后序序列(PAT (Advanced Level)1086 Tree Traversals Again,树)
题目大意是给出非递归中序遍历一棵树的过程,让你输出后序序列。如:很妙的是,在非递归中序遍历过程中,顺序push的数字就是先序遍历数组,顺序pop的数字就是中序遍历数组。怎么得到后序遍历数组呢?其实这道题根本不需要建树,只需进行一些递归即可。递归函数写法如下:参数中的preL,inL,postL是指这次过程中需要用到的pre,in,post序列的部分的最左边元素的下标。需要注意的是,下...原创 2019-05-17 18:55:37 · 281 阅读 · 0 评论