
数据结构
文章平均质量分 80
芋圆西米露
情不自禁流下属于真正弱者的泪水/doge/doge/doge
展开
-
1151 LCA in a Binary Tree (30分)(中序求LCA)
【题意】给定一棵树的中序和前序,给出q个询问,每个询问两个点u,v,询问u,v的最近公共祖先。【题解】不需要建整颗树,在左根右这样的中序时,如果两个结点分别在根的左右(可包含根),那么根即是LCA;如果两个结点同时在根的左边,那么我们继续遍历左子树;否则继续遍历右子树。【代码】#include <bits/stdc++.h>using namespace std...原创 2019-12-07 12:40:45 · 399 阅读 · 0 评论 -
PAT 甲级 1098 Insertion or Heap Sort (25 分)
【题意】给定一个序列的初始状态和经过某种排序几个步骤之后的结果,要求判断是插入排序还是堆排序,并输出执行下一个步骤之后的结果。【题解】不清楚插入排序和堆排序的请移步:八大排序首先,我们根据排序过程中得到的序列判断是哪种排序。怎么判断呢?如果能把序列分成两段,前一段是有序的,后一段是跟原序列相同的,这样就是插入排序;否则是堆排序。如果是插入排序,那么我们只需要将下一个元素加入到前一段...原创 2019-11-26 19:43:58 · 175 阅读 · 0 评论 -
求最短路径的四种方法(Dijkstra,Floyd,Bellman-Ford,SPFA算法)
【前言】还不知道图是什么的可以看看这篇:图的基本概念。最短路径,即在网络(带权的图)中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。第一个顶点为源点,最后一个顶点为终点。【问题分类】单源最短路问题(特定点到所有点的最短路)和多源最短路问题(任意两点之间的最短路)。其中又分为有向图和无向图,有权图和无权图。根据边权的正负,又分为带负权边和不带负权边的最短路。【最...原创 2019-01-28 16:26:11 · 5347 阅读 · 0 评论 -
L2-001 紧急救援 (25 分)(Dijkstra求最短路)
【题目】L2-001紧急救援(25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D...原创 2019-03-03 21:16:12 · 413 阅读 · 0 评论 -
2019牛客国庆集训派对day6 I:Substring Query(Bitset的妙用)
【题意】给定一个字符串s(1e5),q(1e5)次操作,操作1给定位置i和字母c,把第i个元素替换为c;操作二先给一个0再给一个字符串t,查询字符串t在s中的出现次数。【题解】显然常规做法行不通,考虑STL中的Bitset 。bitset简介bitset存储二进制数位,从右往左依次为2^0,2^1,2^2,...for(int i=0;i<n;i++) B[s[i]...原创 2019-10-06 20:05:14 · 271 阅读 · 0 评论 -
STL 之 string、 vector 、bitset 的基本用法
目录stringvectorbitsetstring【头文件】#include<string>【声明】string s1; 默认构造函数 s1 为空串string s2(s1); 将 s2 初始化为 s1 的一个副本string s3("value"); 将 s3 初始化为一个字符串字面值副本string s4(n, 'c'); 将 s4...原创 2018-07-16 19:44:16 · 520 阅读 · 0 评论 -
zcmu 1156: 新年彩灯Ⅰ(树状数组)
【题目】1156: 新年彩灯ⅠTime Limit: 1 SecMemory Limit: 128 MBSubmit: 502Solved: 67[Submit][Status][Web Board]Description新年将至,YY准备挂一排彩灯,已知彩灯刚挂完的彩灯共有N盏(编号为1,2,3,……),并且都是灭的。彩灯的闪烁由一段程序控制。每一秒钟程序会生成两...原创 2018-07-30 11:34:39 · 257 阅读 · 0 评论 -
树状数组(单点修改+区间修改)
【引入】树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个数组的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。这种数据结构(算法)并没有C++...原创 2018-07-24 16:51:29 · 3735 阅读 · 1 评论 -
2019牛客暑期多校训练营(第三场)F:Planting Trees(单调队列)
【题意】给定区域大小n*n的网格和m,要求输出最大的矩形满足任意两个位置的差值不超过m的面积。【题解】思路:枚举上下边界和右边界,用两个单调队列维护最小左边界,更新最大面积。如何维护?以最大值为例,因为如果当前的最大最小值不满足<=m,那么我们需要更小的最大值,所以需要的单调队列是递减的,因此在维护的时候我们每次入队时弹出比当前最大值小的元素。【代码】#include&...原创 2019-07-25 21:24:45 · 372 阅读 · 0 评论 -
牛客练习赛52 B:Galahad(树状数组维护区间不同元素和(个数))
【题目】查询区间和,如果区间元素重复出现则计数一次。【题解】按区间的右端点建立树状数组,维护区间[1,R]的每个元素的最右位置。按查询区间的右端点排序,依次处理,每次更新当前值的最右位置即可。若要查询区间不同元素个数,把 for(;it<=q[i].R;it++){ if(vis[a[it]]) //这个数之前出现过 ...原创 2019-09-14 22:36:33 · 312 阅读 · 0 评论 -
2019徐州网络预选赛 G. Colorful String(回文自动机)
【题解】题意:给定字符串,计算所有回文子串的价值之和,定义一个回文串的价值为该串所有出现不同字母的个数。思路:回文自动机可以跑出,cnt[N]即每个本质不同的回文串的个数,我们可以用num[N]记录每个本质不同的回文串的出现字母按二进制存储的结果,最后计算一下即可。【代码】#include <cstdio>#include <cstring>#incl...原创 2019-09-10 21:16:42 · 192 阅读 · 0 评论 -
ST表实现RMQ详解+例题(一维+二维)
目录【ST算法】【引入】【实现】【一维】【二维】【例题】【一维】【二维】【ST算法】 【引入】区间最值RMQ问题的两种实现方法:1.线段树(预处理时间复杂度,查询与修改时间复杂度,适用于带修改的情况)2.ST算法(预处理时间复杂度 ,查询时间复杂度 ,适用于无修改操作且查询较多的情况)【实现】【一维】ST算...原创 2019-04-24 16:04:22 · 559 阅读 · 0 评论 -
倍增算法实现后缀数组详解+实现代码
【前言】不要被文章的长度吓到,因为罗穗骞的论文要更长更详尽,我只是取了其中的一部分进行学习并做一个学习笔记,便于以后有需要的时候回顾。文章的内容主要是介绍后缀数组的实现,后缀数组的应用部分主要是结合例题来理解。目录【后缀数组】【引入】【后缀数组的实现】【倍增算法】【具体实现】【步骤解析】【复杂度分析】【后缀数组的应用】【最长公共前缀】【单个字符串的相...原创 2019-08-30 13:59:33 · 1144 阅读 · 0 评论