数据结构
数据结构刷题分类
Suprit
先选择一种经历,经历再造就一个人
展开
-
树与二叉树概念整理【理论知识】
原创 2020-04-27 22:44:33 · 372 阅读 · 0 评论 -
【题解】牛客 Planting Trees⭐⭐⭐ 【单调队列】
牛客 Planting Trees⭐⭐⭐InputOutputFor each case, print a single integer, the maximum number of cells in a valid rectangle.Examples22 01 22 13 11 3 22 3 13 2 1输出复制14Hint题意:给出一个矩阵, 找到...原创 2019-10-19 23:10:46 · 277 阅读 · 0 评论 -
【题解】I Hate It HDU - 1754 (线段树 RMQ 模板题)⭐⭐
I Hate It HDU - 1754 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=...原创 2019-04-17 09:24:08 · 872 阅读 · 0 评论 -
敌兵布阵 HDU - 1166 (线段树求和 模板题)
敌兵布阵 HDU - 1166 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报...原创 2019-04-17 09:21:22 · 487 阅读 · 0 评论 -
L2-011 玩转二叉树 (二叉树遍历 重建)
L2-011 玩转二叉树 (25 分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。Input输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。Output在一行中输出该树反转后的层...原创 2019-03-27 19:35:52 · 300 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗?(BST)
L2-004 这是二叉搜索树吗?一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。Inpu...原创 2019-03-31 18:21:24 · 242 阅读 · 0 评论 -
L2-024 部落 (并查集)
L2-024 部落 (25 分) 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。Input输入在第一行给出一个正整数N(≤10^4),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:K P[1] P[2] ⋯...原创 2019-03-31 18:07:41 · 481 阅读 · 0 评论 -
L2-006 树的遍历 (25 分) (二叉树遍历, 重建) (两种实现)(详细讲解)
L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。Input输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。Output在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。Examples输入样...原创 2019-03-26 21:33:18 · 4543 阅读 · 7 评论 -
Tree Walk Aizu - ALDS1_7_C (二叉树遍历)
Tree Walk Aizu - ALDS1_7_C Binary trees are defined recursively. A binary tree T is a structure defined on a finite set of nodes that eithercontains no nodes, oris composed of three disjoint sets ...原创 2019-03-08 11:15:56 · 354 阅读 · 0 评论 -
E - The order of a Tree HDU - 3999 (BST遍历)
E - The order of a Tree HDU - 3999 (BST遍历) As we know,the shape of a binary search tree is greatly related to the order of keys we insert. To be precisely:insert a key k to a empty tree, then the t...原创 2019-03-10 22:20:05 · 222 阅读 · 0 评论 -
ALDS1_7_D:Reconstruction of a Tree (树的重建)
输入:给出一个二叉树的前序遍历和中序遍历输出:输出一个二叉树的后序遍历题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_7_D思路:前序遍历从头开始遍历的时候,第一个元素是根元素,根据这个元素,找到它在中序遍历中的位置,可以确定的是,这个元素在中序遍历序列中的位置,前面的都是这个根的左子树,后面的都是这个元...原创 2019-03-10 17:42:07 · 258 阅读 · 0 评论 -
PTA 愿天下有情人都是失散多年的兄妹 (二叉树遍历)
PTA 愿天下有情人都是失散多年的兄妹 呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?Input输入第一行给出一个正整数N(2 ≤ N ≤104 ),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字...原创 2019-03-06 10:42:23 · 2413 阅读 · 1 评论 -
【详解】Sort it HDU - 2689(冒泡排序交换次数 经典问题) ⭐⭐⭐
Sort it HDU - 2689 You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need.For ...原创 2019-04-26 21:29:21 · 510 阅读 · 0 评论 -
【题解】Color the ball HDU - 1556 (线段树 区间更新)⭐⭐⭐
Color the ball HDU - 1556 N个气球排成一排,从左到右依次编号为1,2,3…N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 1...原创 2019-04-27 12:30:32 · 375 阅读 · 0 评论 -
【题解】牛客多校四 C sequence⭐⭐⭐ 【单调栈 线段树】
牛客多校四 C sequenceYour are given two sequences a_{1 \dots n}a 1…n and b_{1 \dots n}b1…n .You need to answer \displaystyle \max_{1 \le l \le r \le n} {min(a_{l \dots r}) \times sum(b_{l \dots r})...原创 2019-08-07 10:41:28 · 264 阅读 · 0 评论 -
【题解】历届试题 合根植物 ⭐⭐ 【并查集】
历届试题 合根植物w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?Input第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<...原创 2019-05-22 16:26:08 · 240 阅读 · 0 评论 -
【题解】C. News Distribution⭐⭐ 【并查集】
C. News DistributionIn some social network, there are n users communicating with each other in m groups of friends. Let’s analyze the process of distributing some news between users.Initially, some ...原创 2019-05-17 12:31:00 · 518 阅读 · 0 评论 -
【题解】Number Sequence HDU - 1711 ⭐⭐ 【KMP裸题】
Number Sequence HDU - 1711 给定两个数字序列 a[] 和 b[],b[] 有可能整体作为一个连续子序列出现在了 a[] 中,现在请你找出 b[] 在 a[] 中第一次出现的位置(起始位置从 1 开始计数),如果一次都没有出现,请输出 -1。Input第一行包含一个数字 T,表示测试用例的个数。对于每组测试用例,第一行包含两个数字 n m ( 1<= n &l...原创 2019-05-15 15:32:18 · 431 阅读 · 0 评论 -
【题解】Just a Hook HDU - 1698(线段树 区间更新)⭐⭐⭐
Just a Hook HDU - 1698 In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the s...原创 2019-05-01 11:45:01 · 444 阅读 · 0 评论 -
【题解】1929: Prototypes analyze⭐⭐⭐ 【二叉搜索树】
1929: Prototypes analyzeALpha Ceiling Manufacturers (ACM) is analyzing the p roperties of its new series of IncrediblyCollapse-Proof Ceilings (ICPCs). An ICPC consists of n layers of material, each ...原创 2019-05-05 22:18:42 · 302 阅读 · 0 评论 -
【题解】Ultra-QuickSort POJ - 2299 (经典问题 离散化)⭐⭐⭐
Ultra-QuickSort POJ - 2299 设A为有n个数字的有序集(n>1),其中所有数字各不相同。如果存在正整数i, j使得1 ≤iA[j],则这个有序对称为A的一个逆序对,也称作逆序数。在这个问题中,你需要快速的求出一个给定数组中逆序对的数量Input输入包含多个测试用例,每个测试用例第一行为一个整数n(n<500000)表示数组的长度,下面n行每一行包含一个整...原创 2019-04-29 14:33:57 · 634 阅读 · 0 评论 -
【题解】A Simple Problem with Integers POJ - 3468 (线段树成段更新 模板题)⭐⭐⭐
A Simple Problem with Integers POJ - 3468 Psy给出了一个序列,Drh需要处理如下两种询问。"C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 10000)。“Q a b” 询问[a, b]区间中所有值的和。Input第一行包含两个整数N, Q。1 ≤ N,Q ≤ 100000.第二行包含n个整数,表示初始的...原创 2019-04-19 14:42:55 · 301 阅读 · 0 评论 -
【详解】Mayor's posters POJ - 2528(线段树 区间染色 离散化) ⭐⭐⭐⭐
Mayor’s posters POJ - 2528n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。Input第一行: 样例个数T第二行: 贴海报的人n第三行: 每个人贴海报的范围接下来n行: 每个人贴海报的范围Output对于每一个输入,输出最后可以看到的海报...原创 2019-05-01 20:47:38 · 593 阅读 · 0 评论 -
【题解】Count Color POJ - 2777 (线段树 区间染色)⭐⭐⭐
Count Color POJ - 2777 Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.There is a very long board with le...原创 2019-05-01 20:24:26 · 477 阅读 · 0 评论 -
Binary Trees Aizu - ALDS1_7_B (构建二叉树)
Binary Trees Aizu - ALDS1_7_B A rooted binary tree is a tree with a root node in which every node has at most two children.Your task is to write a program which reads a rooted binary tree T and prin...原创 2019-03-06 10:20:28 · 355 阅读 · 0 评论 -
Frogger POJ - 2253 (改写最短路)
Frogger POJ - 2253 湖中有n块石头,编号从1到n,有两只青蛙,Bob在1号石头上,Alice在2号石头上,Bob想去看望Alice,但由于水很脏,他想避免游泳,于是跳着去找她。但是Alice的石头超出了他的跳跃范围。因此,Bob使用其他石头作为中间站,通过一系列的小跳跃到达她。两块石头之间的青蛙距离被定义为两块石头之间所有可能路径上的最小必要跳跃距离,某条路径的必要跳跃距离即这...原创 2019-02-26 20:26:32 · 869 阅读 · 0 评论 -
Rooted Trees Aizu - ALDS1_7_A (树的表达)
Rooted Trees Aizu - ALDS1_7_A A graph G = (V, E) is a data structure where V is a finite set of vertices and E is a binary relation on V represented by a set of edges. Fig. 1 illustrates an example ...原创 2019-03-05 10:16:34 · 651 阅读 · 0 评论 -
933. 最近的请求次数 (队列 难度2) - 详细题解
题目链接这道题开始没看懂…输入输出也不明确, 后来才明白, 其实就用一个队列筛选一下就行了class RecentCounter {public: RecentCounter() { } int ping(int t) { //calculate the count of ping between t-3000 and t...原创 2018-12-19 10:47:17 · 783 阅读 · 0 评论 -
leetcode21. Merge Two Sorted Lists(链表)
题目归并链表, 要注意一下链表的初始化问题, 尤其对于指针要谨慎处理, 很容易空指针异常/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }...原创 2018-12-11 14:14:34 · 239 阅读 · 0 评论 -
行编辑器 HRBUST - 2301 (栈 难度1) - 详细题解
题目链接栈的一道基础题目, 其实用vector更加方便#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <stdlib.h>#include <vecto...原创 2018-12-17 17:33:10 · 297 阅读 · 0 评论 -
Rails UVA - 514 (栈+模拟 难度3)
题目链接一道模拟+栈的题目直接遍历判断就好了, 不必全部预处理.对于每节车厢, 有三种操作:由A直接驶向B由A先驶向C由C直接驶向B注意这道题的输入有些独特, 稍加判断#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#in...原创 2018-12-17 16:43:44 · 611 阅读 · 0 评论 -
150. 逆波兰表达式求值 (栈 难度2) 详细题解
题目链接非常经典的栈题目了, 遇见数字就入栈, 遇见符号就取出栈首的两个数字作相应运算再入栈.class Solution {public: int evalRPN(vector<string>& tokens) { stack<int> ans; for(int i = 0; i < toke...原创 2018-12-16 12:20:54 · 367 阅读 · 0 评论 -
20. 有效的括号 (栈 难度1) 详细题解
题目链接栈的经典教学级题目了class Solution {public: bool isValid(string s) { if(s.length()%2 == 1) return false; //剪枝 stack<char> tmp; for(int i = 0; i <...原创 2018-12-16 11:42:12 · 205 阅读 · 0 评论 -
leetcode 739. 每日温度 (栈+哈希表)
题目链接笨方法: 时间超限class Solution {public: vector<int> dailyTemperatures(vector<int>& T) { vector<int> ans; //方法一: 每一个气温都便利一次, n^2复杂度 for(int i...原创 2018-12-16 10:59:49 · 426 阅读 · 0 评论 -
621. 任务调度器 (贪心|数学思维 | 队列 难度4) - 详细题解
题目链接这道题在队列的归类中, 实际上最直接的方法, 或者说最核心的方法与队列无关, 而是用到了贪心和数学思维.参考博客这道题让我们安排CPU的任务,规定在两个相同任务之间至少隔n个时间点。说实话,刚开始博主并没有完全理解题目的意思,后来看了大神们的解法才悟出个道理来。下面这种解法参考了大神fatalme的帖子,由于题目中规定了两个相同任务之间至少隔n个时间点,那么我们首先应该处理的出现次数...原创 2018-12-19 19:43:57 · 304 阅读 · 0 评论 -
Assistance Required HDU - 1216 (模拟+链表)
题目复习一些, 对于常用删除和插入操作的数据结构要用list, 对于遍历和查找更多的数据结构要用集合, 这道题很显然要用list#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>#includ...原创 2018-12-13 17:36:38 · 293 阅读 · 0 评论 -
leetcode 206. 反转链表
试了一下最简单的递推写法, 如下;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi...原创 2018-12-02 21:11:14 · 135 阅读 · 0 评论 -
Sliding Window POJ - 2823 (单调队列)
题目链接这道题是一道非常经典的单调队列题目.单调队列是一种单调递增或单调递减的队列结构, 在C++STL中有priority_queue来实现了, 但较为麻烦只能对队尾进行操作和访问, 同时考虑到可能存在超时的因素, 所以在平常做题中我们一般都会选择自己来实现单调队列. 对于求类似区间最大/最小的问题, 单调队列是最佳选择, 因为它可以在常数复杂度下实现该过程. 即使是对于1.2.3.4.5...原创 2019-01-02 15:39:52 · 532 阅读 · 0 评论 -
最短前缀 OpenJ_Bailian - 2797 (字典树)
https://vjudge.net/problem/OpenJ_Bailian-2797书上说这题用贪心能写, 我想了半天越想越复杂, 其实用数据结构的话反而会更加简单字典树是一种很基础的树, 就是把多个单词的每个字母拆分成树的一条枝, 重复字母的次数记在节点num值中, 对于很多问题可以大大简化求解步骤比如此题来说, 我们为输入的多个单词建立一个字典树, 然后对于每个字符串的每...原创 2018-10-15 21:29:29 · 562 阅读 · 0 评论 -
Largest Rectangle in a Histogram HDU - 1506 (DP 单调栈 思维) 详细题解
题意: 给出若干连续的矩形高度(如图), 宽度为1, 求最大的矩形面积题解: 这是一道非常不错的题目, 简单总结一下这类题的惯用思路对于这种拿到就有思路的题目, 我们不妨先考虑惯用思路, 也就是枚举每一个hi, 再分别左右扫描, 很显然n^2的复杂度, 一定会超时, 我们不妨再来考虑哪里可以拿来优化.这一个思路超时的关键就在于里面似乎存在了大量的重复计算, 可以试想扫描hi高度时, 很多比...原创 2019-02-02 10:30:34 · 294 阅读 · 1 评论