Skip to content

泉州一中信息学Blog

信息学奥赛技术分享博客

  • 登录
  • 小学oj
  • 中学oj
  • 测试页面1
  • Toggle search form

2024常州暑假集训Day7——8.18

Posted on 2024年8月18日 By 郑, 铭轩 2024常州暑假集训Day7——8.18无评论

早上8:00整,我们又又又来到了这与我们“亲爱”的Quanzhou No.1 High School有长达20个英文字符的最长公共子序列的Changzhou No.1 High School。

上午

讲了各种树

树

树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。

先序遍历

先序遍历是先访问根结点,再从左到右按照先序思想遍历各棵子树。

后序遍历

后序遍历是先从左到右遍历各棵子树,再访问根结点。

层次遍历

层次遍历是按照层次从小到大逐个访问,同一层次按照从左到右的次序访问。

叶结点遍历

有时把数据信息存放在叶结点中,其余结点都是用来表示数据之间的某种分支或层次关系。这种情况下只需要访问所有的叶结点,此时就采用叶结点遍历法。

二叉树

相关性质

(1)二叉树的第i层上至多有2^(i-1)个结点(i≥1)。
(2)深度为k的二叉树至多有2^k –1个结点(k≥1)。

满二叉树

一棵深度为k且有2^k –1个结点的二叉树,称为“满二叉树”。

完全二叉树

在满二叉树的基础上,在最后一层的最右边去掉几个连续的节点,称为“完全二叉树”

二叉树的遍历

先序遍历

若二叉树非空,则先访问根结点,再分别先序遍历左子树和右子树。

中序遍历

若二叉树非空,则先中序遍历左子树,再访问根结点,最后再中序遍历右子树。

后序遍历

若二叉树非空,则后序遍历左子树,再后序遍历右子树,最后访问根结点。

下午

优先队列

容器

容器默认为vector。

比较方式

比较方式默认为

bool operator<(int x,int y)
{
    return x<y;
}

大根堆

priority_queue<int> q;

小根堆

priority_queue<int,vector<int>,greater<int> > q;

常用代码

q.push(x)   插入一个数
q.top() 取队首
q.pop() 队首出队
q.empty()   判断队列是否为空

二叉堆

二叉堆是一种常用的优先队列,它支持优先队列的三个基本操作,且插入结点和删除最小结点的时间复杂度都是O(log2n),取最小结点的时间复杂度是O(1)。而且编程简单,效率高。

哈夫曼编码与哈夫曼树

构建方式(哈夫曼算法)

具体做法是:
(1)根据给定的n个权值{W1,W2,…,Wn},构造n棵二叉树的集合 F ={T1,T2,…,Tn},其中每棵二叉树均只含一个权值为Wi的根结点,其左、右子树为空树;
(2)在F中选取其根结点的权值最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值之和;
(3)从F中删去这两棵树,同时加入刚生成的新树;
(4)重复(2)和(3)两步,直到F中只有一棵树为止。

并查集

概念

并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系,即动态地维护和处理集合元素之间复杂的关系,当给出两个元素的一个无序对(a,b)时,需要快速“合并”a和b分别所在的集合,这其间需要反复“查找”某元素所在的集合。“并”、“查”和“集”三字由此而来。在这种数据类型中,n个不同的元素被分为若干组。每组是一个集合,这种集合叫做分离集合(disjoint set)。并查集支持查找一个元素所属的集合以及两个元素各自所属的集合的合并。

并查集支持的操作

MAKE-SET(x)

建立一个新的集合,其仅有的成员(同时就是代表)是x。由于各集合是分离的,要求x没有在其它集合中出现过。

UNION(x,y)

将包含x和y的动态集合(例如Sx和Sy)合并为一个新的集合,假定在此操作前这两个集合是分离的。结果的集合代表是Sx∪Sy的某个成员。一般来说,在不同的实现中通常都以Sx或者Sy的代表作为新集合的代表。此后,由新的集合S代替了原来的Sx和Sy。

FIND-SET(x)

返回一个包含x的集合的代表。

题目
亲戚

思路

并查集基本模板,十分简单,就不讲了。

代码
#include<bits/stdc++.h>
using namespace std;
int fa[20010];
int m,n,i,x,y,q;
int find(int x)
{
    while(fa[x]!=x)
    {
        x=fa[x];
    }
    return x;
}
void fun(int r1,int r2)
{
    fa[r2]=r1;
}
int main()
{
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fa[i]=i;
    }
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        int r1=find(x);
        int r2=find(y);
        if(r1!=r2)
        {
            fun(r1,r2);
        }
    }
    cin>>q;
    for(i=1;i<=q;i++)
    {
        scanf("%d%d",&x,&y);
        if(find(x)==find(y))
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
    }
    return 0;
}
训练日志

文章导航

Previous Post: 24常州集训Day7
Next Post: 常州Seven Day堆,二叉树

发表回复 取消回复

要发表评论,您必须先登录。

2025年 6月
一 二 三 四 五 六 日
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« 2月    

2024常州 Class Classic OI Problems Contest cqr的长乐集训2023 CZYZ LOC New Game NOI NOIP Password Protected PM_PK Preview Problems Retrospect Selfmade Qusetion STL The end Training Uneasy Problem 蒟蒻 通报

  • 训练日志
  • 链表
  • 入门
  • 模拟
  • dfs序
  • 并查集
  • spfa
  • 最小割
  • 矩阵树定理
  • 仙人掌
  • BSGS
  • 凸包
  • 回文自动机
  • 递推与动归
  • 堆
  • 莫队算法
  • ST表
  • Treap
  • 树套树
  • 可持久化线段树
  • 初赛
  • 搜索
  • 贪心
  • 深度优先搜索
  • 欧拉图
  • dijkstra
  • 费用流
  • 哈夫曼树
  • kruskual
  • 置换
  • 旋转卡壳
  • KMP
  • 区间动归
  • STL
  • 链表
  • 可并堆
  • sply
  • 主席树
  • 可持久化字典树
  • 算法
  • 动态规划
  • 构造
  • 广度优先搜索
  • 最短路
  • floyd
  • 最大流
  • 虚树
  • prim
  • 筛法
  • 半平面交
  • 字典树
  • 背包动归
  • 基础数据结构
  • 分块
  • 线段树
  • 替罪羊树
  • K-DTree
  • 图论
  • 二分法
  • 迭代搜索
  • 拓扑排序
  • 有上下界网络流
  • 生成树
  • 快速幂
  • 后缀数组
  • 树形动归
  • 哈希表
  • 中级数据结构
  • 平衡树
  • 可持久化数据结构
  • 数据结构
  • 三分法
  • 启发式搜索
  • 图的连通
  • 点分治
  • 博弈论
  • AC自动机
  • 状压动归
  • 单调栈
  • 树状数组
  • 高级数据结构
  • OI资料
  • 数学
  • 高精度
  • 差分约束
  • 树上倍增
  • 素数测试
  • 后缀自动机
  • 数位动归
  • 单调队列
  • 新闻
  • 几何
  • 随机化
  • 二分图染色
  • 树链剖分
  • 欧拉函数
  • manacher
  • 斜率优化
  • 离线处理
  • 信息学奥赛学长风采
  • 字符串
  • 二分图匹配
  • prufer编码
  • 卡特兰数
  • 密码学
  • 决策单调
  • 赛后总结
  • 其他
  • 2-SAT
  • 最近公共祖先
  • 矩阵乘法
  • 记忆化搜索
  • 网络流
  • Link cut tree
  • 排列组合
  • 树
  • 高斯消元
  • 乘法逆元
  • 容斥原理
  • 调和级数
  • 概率与期望
  • 模线性方程组
  • 莫比乌斯反演
  • 快速傅里叶变换
  • 扩展欧几里德
  • 最大公约数与最小公倍数

近期文章

  • DP杂题
  • 2025年2月13日模拟赛
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 3
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 2
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 1

近期评论

归档

  • 2025年2月
  • 2025年1月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月

Copyright © 2025 泉州一中信息学Blog.

Powered by PressBook WordPress theme