07 2022 档案
摘要:食物链 首先考虑题目中所说的 3 种矛盾情况中的后两种,都很好判断,关键是如何判断当前的话是与前面的话冲突的。 这里我们先给出两个定理以方便判断一些关系: 一。因为三个种族都有一个且且仅有一个能吃的种族。如果动物 A 能吃 B,动物 C 也能吃 B,那么说明A 和 C 便是同一个种族,否则这个关系就
阅读全文
摘要:习惯上,我们将二叉堆简称为"堆"。堆是由数组存储的完全二叉树,是一种实现优先队列(priority_queue)的数据结构。 所谓优先队列,是允许插入(insert)元素,查询最优元素(最大元素或最小元素),删除元素的三种操作。 堆在NOIP竞赛中应用广泛,常用与快速查询最大(最小值),优化各种算法
阅读全文
摘要:1.队列queue queue是STL中实现“先进先出”的一个容器。 使用queue。必须加#include<queue>及using namespace std; queue<typename> name; 常用函数: (1) push() :将x入队,时间复杂度为O(1)。 (2) front(
阅读全文
摘要:并查集学习知识点 ·并查集概念 ·并查集的基础操作:初始化、合并与查询 ·并查集优化1:路径压缩 ·并查集优化2:按秩合并(启发式合并) ·带权并查集 ·种类并查集 引入: 话说在江湖中散落着各式各样的大侠,他们怀揣着各自的理想和信仰在江湖中奔波。或是追求武林至尊,或是远离红尘,或是居庙堂之高,或是
阅读全文
摘要:一.概念 树状数组(Binary Indexed Tree(B.I.T)也称作Fenwick Tree)是一个区间查询和单点修改复杂度都为log(n)的数据结构。主要用于查询任意两点之间的所有元素之和 1.问题的提出 有一个一维数组,长度为n. 对这个数组做两种操作: 1.修改,对第i~j之间的某元
阅读全文
摘要:一. 概念 1.引例 有线性表(1,75,324,43,1353,90,46,… ) 目的:查找值为90的元素 常见做法: 1、通过一维数组进行遍历查找 (依次比较)( O(n) ) 2、如果关键字有序,可采用二分查找 ( O(logn) ) 缺陷:当数据规模极大的时候,查找将会变得效率低下。 假设
阅读全文
摘要:一. 图的概念 1.定义 某类具体事物(顶点)和这些事物之间的联系(边),由顶点(vertex)和边(edge)组成, 顶点的集合V,边的集合E,图记为G = (V,E) 2.分类 1、无向图 Def:边没有指定方向的图 2、有向图 Def:边具有指定方向的图 (有向图中的边又称为弧,起点称为弧头,
阅读全文