• 2024-11-11计算二叉树(二叉链表)的带权路径长度
    方法1#include<bits/stdc++.h>#defineintlonglong#definemod998244353usingnamespacestd;usingpii=pair<int,int>;typedefstructBtnode{ intdata; structBtnode*lc,*rc; }*Btree,Btnode;//笔试这个可以放上面,但是真的写程序应该把getwpl放在g
  • 2024-10-29数据结构 之 哈夫曼树及其应用(八)
    提示:本节重点是哈夫曼树的构造文章目录哈夫曼树的基本概念举例※构造哈夫曼树基本思想※构造哈夫曼树过程哈夫曼树的应用1------用于最佳判断过程哈夫曼树应用2----用于通信编码哈夫曼编码总结哈夫曼树的基本概念路径长度:由树中一个结点到另一结点的分支构成这
  • 2024-10-21带权并查集 学习笔记
    顾名思义,就是并查集带权值。在路径压缩的时候,我们还要维护权值应该怎么办呢?关联题目:P1196[NOI2002]银河英雄传说。我们对于一个舰队维护一个\(fr\)表示到头部的距离,\(cnt\)表示该舰队的战舰数量。那么每一次合并时,先进行路径压缩,找到父亲,在将父亲的权值传下来即可。因为每
  • 2024-10-08并查集
    1.并查集每次合并两个不相交集合,或者询问两个元素是否在同一个集合里。洛谷P1197[JSOI2008]星球大战给一张图,每次删掉一个点及相连的边,求剩下的图中的联通块数。我们倒着从空图往回做,就变成了加边求联通块数的问题。洛谷P1525[NOIP2010提高组]关押罪犯有一张图,边
  • 2024-10-01哈夫曼树
    哈夫曼树的相关定义从树上一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目(边的数量)称为路径长度树中的结点常常被赋予一个表示某种意义的数值,称为该节点的权从树的根到一个结点的路径长度与该节点上权值的乘积被称为该节点的带权路径长度树中所有
  • 2024-09-29[NOI2002] 银河英雄传说(带权并查集)
    带权并查集稍微注意下细节、#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefve
  • 2024-09-25较快速的最大带权独立集算法
    前言重新来吧别输在过去最得意的事上。只是单纯的记录一下这个小知识点。很多时候,题目可以转化为求最大带权最小点覆盖或者是最大独立集。但是他又经常把这个范围给到\(n\le40\)这种看上去可以用指数又不太能用指数的情况。可能这个时候你就需要用到短小精悍的它。基
  • 2024-09-22基础带权并查集
    只能基础查询到根节点的距离structDSU{intfa[N],siz[N],deep[N];voidinit(){for(inti=1;i<=n;i++){fa[i]=i;siz[i]=1;deep[i]=0;}}intfind(intx){inttmpfa=fa[x];
  • 2024-08-17c语言计算二叉树的带权路径长度之和(WPL)
    1.WPL:树中全部叶节点的带权路径之和2.代码中所画的树为:3.求上述WPL:WPL=0*1+1*2+1*3+2*4+2*5=234.主要代码为:intwpl(Node*ROOT,inthigh){ intn=0; if(ROOT!=NULL){ n=ROOT->weight*high; n=n+wpl(ROOT->lchild,high+1); n=n+wpl(ROOT->rchild,high+1); } r
  • 2024-08-12【转载】网络流与线性规划 24 题刷题指南
    前言本篇博文转载自博客园ticmis的博文网络流24题,转载时做了如下改动:排版整理,规范化\(\LaTeX\)。题单中添加了洛谷题号和洛谷难度。错别字修改。内容描述稍作改动。说实话,本人很讨厌某SDN上的各个博主间互相抄来抄去的行为,这一篇是我第一次转载别人的博文,原因是
  • 2024-08-02树(tree) - 题解(带权并查集)
    树(tree)时间限制:C/C++2000MS,其他语言4000MS内存限制:C/C++256MB,其他语言512MB描述给定一个\(n\)个结点,\(n−1\)条边的有根树。第\(i\)条边可以用(\(a_i,b_i\))来描述,它表示连接结点\(a_i\)和结点\(b_i\)的一条边,其中结点\(a_i\)是结点\(b_i\)的父节点。
  • 2024-07-022024.7
    1.Um_nikmod998244353ContestF.IsThisFFT?不妨令最后形成的链是\(1-2-3-\dots-n\),然后令\(p_i\)是\(i-{i+1}\)被删的时间。如果枚举了\(p\)形成的大根笛卡尔树,怎么算答案呢,你发现我们的限制形如,父亲要后于儿子加入;设左子树大小为\(x\)右子树为\(y\),则有\(
  • 2024-06-12数据结构复习笔记5.6:哈夫曼编码树
    1.前导概念1.定义:设有n个权值{w1,w2,…,wn},构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则wpl最小的二叉树叫哈夫曼树。例子:2.结点的路径长度:从根结点到该结点的路径上的连接数3.树的路径长度:就是树的每个叶⼦结点的路径⻓度之和4.结点的带权路径⻓度:结点的路径⻓
  • 2024-05-31蚂蚁
    这一道题目蓝书上说的有错,不应该用等价这个词实际上,原图中任意一种连边方案(无论是否相交)与二分图的一个完备匹配构成双射而由于我们只用求一种方案,又证明了二分图的带权最小匹配一定是不相交的,所以可以这么求那数据保证有解的意思是什么?原图一定是二分图,也就一定有带权最小匹配
  • 2024-05-25C126 带权并查集 P1196 [NOI2002] 银河英雄传说
    视频链接:   P1196[NOI2002]银河英雄传说-洛谷|计算机科学教育新生态(luogu.com.cn)//带权并查集#include<iostream>usingnamespacestd;constintN=30005;intT;intp[N],d[N],siz[N];intfind(intx){if(p[x]==x)returnx;intt=find(p[x
  • 2024-04-04操作系统综合题之“短进程优先调度算法(Shortest-Process-First,SPF)计算平均周转时间以及平均带权周转时间”
    一、问题:有4个进程A、B、C、D,他们的到达时间、预计运行时间以及优先级数值(优先级数值越小,表示优先级越高)如下表所示。(注:精确到小数点后2位) 1.请计算采用短进程优先调度算法的平均周转时间和平均带权周转时间2.请计算采用抢占式优先调度算法的平均周转时间和平均带权周转时间
  • 2024-03-16邻接表存储带权的无向图(c++题解)
    题目描述给出一个无向带权图,顶点数为n,边数为m。输入格式第一行两个整数n,m,接下来有m行,每行3个整数u,v,w,表示点u到点v有一条边,边权为w。输出格式第i行输出第点i的所有邻接点,按照点i到该点的边权由小到大输出,如果边权相等,则按照点的编号有小到大输出。样例样例输入复
  • 2024-03-02带权并查集板子
    以一道区间和查询来说明板子如何使用1.merge的时候只需要维护两个根节点的距离,利用的是合并时题目给的信息2.find的时候更新维护是子节点到根的距离3.需要加一个查询函数,因为距离数组是开在结构体内部的。题目描述对于一个长度为\(N\)的整数数列\(A_{1},A_{2},\cdotsA_
  • 2023-12-15哈夫曼树和哈夫曼编码
      路径:由树中一个结点到另一个结点之间的分支构成。路径长度:路径上分支的数目。树的带权路径长度:树中所有叶子结点的路径长度与权重的乘积之和,通常记作WPL。 WPL=2*6+2*9+3*2=36 带权路径长度WPL最小的二叉树称作最优二叉树或赫夫曼树。   设一组权值集合W=
  • 2023-12-09带权并查集
    对于种类并查集主要是考虑清楚到根节点距离分为几类,每一类的意义有的题目相出d数组的含义才能想到用带权并查集//find函数需要变化intfind(intx){if(p[x]!=x){introot=find(p[x]);d[x]+=d[p[x]];p[x]=root;}retur
  • 2023-11-20带权拟阵交
    '''cppinclude<bits/stdc++.h>includeusingnamespacestd;constintN=505;intn,m;map<int,vector<pair<int,int>>>E;map<int,int>limit;typedeflonglongll;structuni{intp[N];intcnt;voidinit(){
  • 2023-11-20带权并查集
    很新奇啊这个东西。用来解决形如\(x_i-x_j=y\)系列方程组有无解的问题。思路很简单,\(dis_i\)代表从\(i\)的祖先与\(i\)之间的差值。这样能秒算出方程组中任意两个点的差值。本质是每次把两个方程组合并。找祖先部分:intfindpa(intx){ if(fa[x]!=x){ int
  • 2023-11-13[题解]AT_abc328_f [ABC328F] Good Set Query
    思路带权并查集模板。如果对于一个三元组\((a,b,c)\)如果它能够添加到\(S\)中一定满足如下条件中的一条:\(X_a,X_b\)满足其中有一个是「不确定」的。在这里\(X_i\)「不确定」指\(X_i\)没有与其它的任意\(X_j\)有关系。\(X_a,X_b\)有间接或直接的关系,但是能计算
  • 2023-11-11并查集拓展——种类并查集&带权并查集
    在所面临的问题中,我们不仅需要知道两个元素之间是否存在关系,还需要记录其他要素,于是我们需要对原来的并查集进行拓展。种类并查集对于一般的并查集,只能表示“朋友的朋友就是朋友这种关系”,即我们只关系元素之间的连通性问题。但是对于“敌人的敌人就是朋友”这种关系则无能为力
  • 2023-10-22[HNOI2010] 平面图判定-平面图性质、带权并查集/2-sat
    [HNOI2010]平面图判定-平面图性质、带权并查集/2-sathttps://www.luogu.com.cn/problem/P3209题意:给一张\(n\)个点,\(m\)条边的哈密顿图,并且哈密顿回路已知,问是否是平面图,\(T\)组询问。\(1\leqT\leq100,1\leqn\leq200,1\leqm\leq10^4\)。转换挺奇妙的。极大平面