数据结构(2)acwing

1.trie树

  • 快速存储和查找字符串的集合
  • 结构特征:
  • 例题: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,直接上图

优化:

1.路径压缩

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

3.堆

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

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

    • 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);

Acwing Arithmetic Learning:数据结构(2)的更多相关文章

  1. translation of 《deep learning》 Chapter 1 Introduction

    原文: http://www.deeplearningbook.org/contents/intro.html Inventors have long dreamed of creating mach ...

  2. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【机器学习Machine Learning】资料大全

    昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...

  4. 数据结构与算法 Big O 备忘录与现实

    不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新.        算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感 ...

  5. [Machine Learning] 国外程序员整理的机器学习资源大全

    本文汇编了一些机器学习领域的框架.库以及软件(按编程语言排序). 1. C++ 1.1 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C++, C ...

  6. Machine Learning - 第3周(Logistic Regression、Regularization)

    Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...

  7. Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面

    摘要:介绍了使用Scrapy处理JSON API和AJAX页面的方法 有时候,你会发现你要爬取的页面并不存在HTML源码,譬如,在浏览器打开http://localhost:9312/static/, ...

  8. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  9. 深入解析Java对象的hashCode和hashCode在HashMap的底层数据结构的应用

    转自:http://kakajw.iteye.com/blog/935226 一.java对象的比较 等号(==): 对比对象实例的内存地址(也即对象实例的ID),来判断是否是同一对象实例:又可以说是 ...

随机推荐

  1. TLB和CPU缓存

    TLB 如果每次应用程序访问一个线性地址都需要先解析(查PDT,PTT)那么效率十分低,为了提高执行效率CPU在CPU内部建立了一个TLB表,此表和寄存器一样访问速度极高.其会记录线性地址和物理地址之 ...

  2. TypeScript 中限制对象键名的取值范围

    当我们使用 TypeScript 时,我们想利用它提供的类型系统限制代码的方方面面,对象的键值,也不例外. 譬如我们有个对象存储每个年级的人名,类型大概长这样: type Students = Rec ...

  3. 把el-element的日期格式改为CRON

    在日常的开发当中,经常会遇到格式的不匹配造成的困扰. 在日期管理上,el-element也是贴心的准备了相关的日期选择器,但是在取值的时候发现,el-element所给出的值格式可能并不是我们常用的. ...

  4. grub救援模式

    http://www.jinbuguo.com/linux/grub.cfg.html

  5. tomcat---starup.bat点击窗口自动关闭

  6. 聊聊java工程师换工作那些事

    最近有个读者在苦恼一件事,那就是有大公司在挖他,他要不要从所在的小公司,跳槽到大公司,前提是两家公司的待遇基本一致.由这个问题结合自己多年的工作经验,来谈谈java工程师要不要跳槽,何时跳槽,怎么跳槽 ...

  7. 为Go项目编写Makefile

    为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程. make介绍 make是一个构建自动化工具,会在当前目录下寻 ...

  8. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  9. Unity3d_2018_2019_2020安装包

    网上各种注册,官网登陆这么麻烦,留着自用 链接:https://pan.baidu.com/s/1LBtMetnr9xkOa18xYiFoDA 提取码:o01t 链接:https://pan.baid ...

  10. Volatile 原理及使用,java并发中的可见性问题

    1.解决并发编程中的可见性问题 volatile 代表不使用cpu缓存,修改后的数据,将直接刷到内存中,被volatile修饰的变量,读取的时候,也是从内存中读取,不从cpu缓存中读取 上代码 // ...