zoukankan      html  css  js  c++  java
  • Acwing Arithmetic Learning:数据结构(2)

    数据结构(2)acwing

    image-20210626200453694

    1.trie树

    • 快速存储和查找字符串的集合
    • 结构特征:image-20210626175138514
    • 例题:Trie字符串统计 ?

    2.并查集(近乎O(1))

    • 思路
    1. 将两个集合合并
    2. 询问两个元素是否在一个集合中
    • 基本原理:

      每个集合用一颗树来表示,树根的编号就是整个集合的编号。每个节点存储他的父节点,p[x]表示x的父节点

    • 问题:

    1. 问题1:如何判断树根:if(p[x] == x)
    2. 问题2:如何求x的集合编号:while(p[x] != x) x = p[x];
    3. 问题3:如何合并两个集合:px是x的集合编号,py是y的集合编号。p[x] = y,直接上图image-20210626191315099

    优化:

    1.路径压缩

    1. scanf使用%s会默认忽略“空格”和"回车",不用%c
    • 上代码:image-20210626191425784

    3.堆

    • 概念:”小根堆“(顾名思义{根小于左右儿子})----》为“完全二叉树”(最后一行可以不满,以上全满),上图

    image-20210626195342299

    • 存储方式(一维数组存储)

      image-20210626195623804

      • x的左儿子:2x
      • x的右儿子:2x+1
    • 如何手写一个堆?

      1. 插入一个数

        heap[ ++ size] = x;up(size);
        
      2. 求集合中最小值

        heap[1];
        
      3. 删除最小值

        heap[1] = heap[size];size --;down(1);
        
      4. 删除任意一个元素

        heap[k] = heap[size];size --; down(k);up(k);
        
      5. 修改任意一个元素

        heap[k] = x;down(k);up(k);
        
  • 相关阅读:
    python 基础第二篇
    python 基础第五篇
    python 基础第四篇
    购物小编程(完整编码)
    计算机 python概论
    str 相关操作
    python 基础第三篇
    Nginx 配置多站点vhost
    h5页面宽度设置7.5rem
    js 倒计时,转义
  • 原文地址:https://www.cnblogs.com/happy-prince/p/14939025.html
Copyright © 2011-2022 走看看