-
【数据结构】维护队列
所属栏目:[安全] 日期:2021-04-01 热度:161
T69293 维护队列 题目描述 Alice 给 Bob 布置了很多工作,他忙的不可开交,决定按照“先进先出(FIFO)”的顺序依次处理这些工作。但是处理过程中,Bob 意识到这种顺序可能不是最优的,因此他会选择性的把某些工作延后。 抽象来说,你需要维护一个队列,支持[详细]
-
【数据结构】静态链表的实现(C语言描述)
所属栏目:[安全] 日期:2021-04-01 热度:164
#include stdio.h#include "stdlib.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 1000 // 定义线性表最大容量typedef int Status;typedef int ElemType;// 定义静态链表的存储结构typedef struct{ ElemType data; // 数据[详细]
-
【数据结构】莫队(二)
所属栏目:[安全] 日期:2021-04-01 热度:179
今天的内容是带修莫队。 例题:P1903 [国家集训队]数颜色 / 维护队列 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同[详细]
-
【数据结构】二叉树的创建与遍历
所属栏目:[安全] 日期:2021-04-01 热度:108
#include stdio.h#include string.h#include stdlib.h#include math.h#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100 /* 存储空间初始分配量 */typedef int Status;typedef char TElemType; /* 假定二叉树的元素都是字符类[详细]
-
【数据结构】线段树(Segment Tree)
所属栏目:[安全] 日期:2021-04-01 热度:102
? 假设我们现在拿到了一个非常大的数组,对于这个数组里面的数字要反复不断地做两个操作。 1、(query)随机在这个数组中选一个区间,求出这个区间所有数的和。 2、(update)不断地随机修改这个数组中的某一个值。 时间复杂度: 枚举: 枚举L~R的每个数并[详细]
-
自己动手实现java数据结构(三) 栈
所属栏目:[安全] 日期:2021-04-01 热度:108
副标题#e# 1.栈的介绍 在许多算法设计中都需要一种"先进后出(First Input Last Output)"的数据结构,因而一种被称为"栈"的数据结构被抽象了出来。 栈的结构类似一个罐头:只有一个开口;先被放进去的东西沉在底下,后放进去的东西被放在顶部;想拿东西必须[详细]
-
自己动手实现java数据结构(四)双端队列
所属栏目:[安全] 日期:2021-04-01 热度:82
副标题#e# 1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念。和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因而一种被称为"队列(Queue)"的数据结构被抽象了出来(因为现实中的队列,就是先进先出的[详细]
-
自己动手实现java数据结构(一) 向量
所属栏目:[安全] 日期:2021-04-01 热度:200
副标题#e# 1.向量介绍 计算机程序主要运行在内存中,而内存在逻辑上可以被看做是连续的地址。为了充分利用这一特性,在主流的编程语言中都存在一种底层的被称为数组(Array)的数据结构与之对应。在使用数组时需要事先声明固定的大小以便程序在运行时为其开辟[详细]
-
自己动手实现java数据结构(六)二叉搜索树
所属栏目:[安全] 日期:2021-04-01 热度:150
副标题#e# 1.二叉搜索树介绍 前面我们已经介绍过了向量和链表。有序向量可以以二分查找的方式高效的查找特定元素,而缺点是插入删除的效率较低(需要整体移动内部元素);链表的优点在于插入,删除元素时效率较高,但由于不支持随机访问,特定元素的查找效率[详细]
-
自己动手实现java数据结构(八) 优先级队列
所属栏目:[安全] 日期:2021-04-01 热度:187
副标题#e# 1.优先级队列介绍 1.1 优先级队列 有时在调度任务时,我们会想要先处理优先级更高的任务。例如,对于同一个柜台,在决定队列中下一个服务的用户时,总是倾向于优先服务VIP用户,而让普通用户等待,即使普通的用户是先加入队列的。 优先级队列和普[详细]
-
自己动手实现java数据结构(七) AVL树
所属栏目:[安全] 日期:2021-04-01 热度:194
副标题#e# 1.AVL树介绍 前面我们已经介绍了二叉搜索树。普通的二叉搜索树在插入、删除数据时可能使得全树的数据分布不平衡,退化,导致二叉搜索树最关键的查询效率急剧降低。这也引出了平衡二叉搜索树的概念,平衡二叉搜索树在此前的基础上,通过一系列的等[详细]
-
自己动手实现java数据结构(五)哈希表
所属栏目:[安全] 日期:2021-04-01 热度:135
副标题#e# 1.哈希表介绍 前面我们已经介绍了许多类型的数据结构。在想要查询容器内特定元素时,有序向量使得我们能使用二分查找法进行精确的查询((O(logN)对数复杂度,很高效)。 可人类总是不知满足,依然在寻求一种更高效的特定元素查询的数据结构,哈希表[详细]
-
【数据结构】【状态压缩】刷题
所属栏目:[安全] 日期:2021-04-01 热度:188
没什么别的,就希望自己记住那些函数 1floyd+bitset优化 #includecstdio#includecstdlib #includebitset using namespace std;int n;const int N=2003;char s[N];bitset N bs[N]; int main(){ scanf("%d",n); for(int i=1;i=n;i++) { scanf("%s",s+1); for[详细]
-
【数据结构】Hash表
所属栏目:[安全] 日期:2021-04-01 热度:60
副标题#e# 【数据结构】Hash表 Hash表也叫散列表,是一种线性数据结构。在一般情况下,可以用o(1)的时间复杂度进行数据的增删改查。在Java开发语言中,HashMap的底层就是一个散列表。 1. 什么是Hash表 Hash表是一种线性数据结构,这种数据结构的底层一般是[详细]
-
【数据结构】2.java源码关于LinkedList
所属栏目:[安全] 日期:2021-04-01 热度:104
副标题#e# 关于LinkedList的源码关注点 1.从底层数据结构,扩容策略 2.LinkedList的增删改查 3.特殊处理重点关注 4.遍历的速度,随机访问和iterator访问效率对比 ? 1.从底层数据结构,扩容策略 构造函数不做任何操作,只要再add的时候进行数据初始化操作,[详细]
-
【数据结构】之 线性表详解
所属栏目:[安全] 日期:2021-04-01 热度:164
副标题#e# 线性表(Linear List) 基本概念 线性表是由n(n=0)个类型相同数据元素组成的有限序列。数据元素可由若干个数据对象组成,且一个线性表中的数据元素必须属于同一数据对象。 线性表示n个类型相同数据元素的有限序列,对n0,除第一个元素无直接前驱[详细]
-
《数据结构》第一章:绪论
所属栏目:[安全] 日期:2021-04-01 热度:69
第一章:绪论 1.1 数据结构的基本概念 数据:是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 数据元素:是数据的基本单位,一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分[详细]
-
Codeforces 999D Equalize the Remainders 【数据结构】【贪心】
所属栏目:[安全] 日期:2021-04-01 热度:106
考场的时候想到的n*m做法tle了,正解是O(n+m) 首先想到一个性质是不管a[i],a[j]相差多少,只要a[i],a[j]同余,那想让他们increase后%m得到另一个余数,那他们需要increse的次数是相等的。 所以我们想到把n个数按%m从0到m-1分成m类。这样就能贪心了,因为[详细]
-
【数据结构】4. 树与二叉树
所属栏目:[安全] 日期:2021-04-01 热度:76
副标题#e# 目录 4.1 树的基本概念 4.1.1 树的定义 4.1.2 基本术语 4.1.3 树的性质 4.2 二叉树的概念 4.2.1 二叉树的定义及其主要特性 (1)二叉树的定义 (2)几个特殊的二叉树 (3)二叉树的性质 4.2.2 二叉树的存储结构 (1)顺序存储结构 (2)链式存储[详细]
-
【数据结构】 线性表 的 链式存储结构
所属栏目:[安全] 日期:2021-04-01 热度:64
1 #includestdio.h 2 #includestdlib.h 3 4 typedef struct LinkList { 5 int data; 6 LinkList *next; 7 8 }LinkList,*linklist; 9 //创建头结点 10 int CreateList(linklist L) { 11 L = (linklist)malloc(sizeof(LinkList)); 12 if(!L) 13 exit(0); 14[详细]
-
【数据结构】10分钟教你用栈求解迷宫老鼠问题超详细教程附C++源
所属栏目:[安全] 日期:2021-04-01 热度:183
问题描述 给定一张迷宫地图和一个迷宫入口,然后进入迷宫探索找到一个出口。如下图所示: 该图是一个矩形区域,有一个入口和出口。迷宫内部包含不能穿越的墙壁或者障碍物。这些障碍物沿着行和列放置,与迷宫的边界平行。迷宫的入口在左上角,出口在右下角[详细]
-
【数据结构】1-3 多项式相加
所属栏目:[安全] 日期:2021-04-01 热度:170
其实这个还是有点问题的,在偶见情况下会打印出0*x,目前无解唔。。。 原理就是借用线性表,然后做运算直接先插入到后面。 然后遍历一下,只要指数相同就合并在前面一个里面,后面的归0(不删除)。 打印的时候加一个判断是否为0的条件就行了。 下面是源码[详细]
-
【数据结构】1-2 约瑟夫环问题
所属栏目:[安全] 日期:2021-04-01 热度:81
副标题#e# 这里放出两种不同的代码,一个是老师给的(较为复杂),还有一个是自己写的。 自己写的: #includeiostreamusing namespace std;struct Node { int data; //数据单元 Node *link; //指向下一个结点};class Josephus{private: Node *head,*current[详细]
-
【数据结构】树状数组
所属栏目:[安全] 日期:2021-04-01 热度:167
树状数组 ta的本质是利用二进制的性质维护一组数据 最常用的操作就是求前缀和 int lowbit(int x){ return x(-x); /*通过补码,清空高位1,只留下最后一个1*/} ? void add(int x,int val){ while(x=n){ c[x]+=val; x+=lowbit(x); } /*更新时,需要去把该节[详细]
-
【数据结构】5.1 顺序表的查找以及二分查找的实现
所属栏目:[安全] 日期:2021-04-01 热度:143
副标题#e# 类的结构如下: class StaticSearchTable {private: int *data; int data_number; bool search_seq(int loc,int key); void select_sort(); bool flag;//区分是否为顺序表 public: StaticSearchTable(int n,bool flag); int Search_Seq(int key);[详细]