随笔分类 -  数据结构基础:栈与队列

摘要:单调队列,就是单调的队列,通常用来解决滑动窗口的最值问题,可以应用到 DP 的优化上。一个单调队列中的元素总是单调递增(或递减)的。 例:有一个队列,每次从队尾加入一个元素,或从队首删除一个元素,并在任何时刻求整个队列的最大值。 一个很直接的想法是使用优先队列 priority_queue 即堆,堆 阅读全文
posted @ 2021-07-27 10:44 RioTian 编辑
摘要:题目链接 https://vjudge.net/problem/POJ-2259 题解 在任何时刻,同一个小组的人只要来到了队伍,就会站在一起,所以我们建立一个队列q0存储队伍中所有小组的编号,再为每个小组i建立一个队列qi存储队伍中这个小组的所有成员,一共n+1个队列。 当一个编号为X,组号为Y的 阅读全文
posted @ 2020-08-09 15:38 RioTian 阅读(98) 评论(0) 推荐(1) 编辑
摘要:Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have 阅读全文
posted @ 2020-08-09 15:03 RioTian 阅读(102) 评论(0) 推荐(1) 编辑
摘要:引言 栈(stack)是很简单的一种数据结构,先进后出的逻辑顺序,符合某些问题的特点,比如说函数调用栈。 单调栈实际上就是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内的元素都保持有序(单调递增或单调递减)。 用简洁的话来说就是:单调栈就是 栈内元素单调递增或者单调递减 的栈,单调栈只能在 阅读全文
posted @ 2020-08-09 14:52 RioTian 阅读(2284) 评论(2) 推荐(0) 编辑
摘要:链接:https://ac.nowcoder.com/acm/contest/1005/B 题目描述 一列火车n节车厢,依次编号为1,2,3,…,n。每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种。 输入描述: 一个数,n(n≤60000)n (n \leq 60000)n 阅读全文
posted @ 2020-08-09 14:42 RioTian 阅读(737) 评论(0) 推荐(0) 编辑
摘要:题目大意: 见《挑战程序设计竞赛》P74。 我的理解: 优先队列+贪心 注意把输入的距离(加油站到终点)改为起点到加油站。 因为求得是最优解,需要尽可能少的加油站,所以我们每次希望去加油的时候 加最大的那个,因而将加油站push进priority_queue(堆结构,默认每次弹出最大值) 在到达加油 阅读全文
posted @ 2020-06-09 16:31 RioTian 阅读(120) 评论(0) 推荐(0) 编辑
摘要:单链表的反转可以用递归、非递归和栈的方法实现 链表节点定义: 1、栈 2、递归 利用递归,直到链表的最后一个节点,用一个指针指向该节点,作为反转后的链表的头节点 在递归返回的过程中,让该节点的下一个节点指向该节点(headnextnext=head), 并让该节点指向NULL。这样就从链 阅读全文
posted @ 2020-04-01 18:34 RioTian 阅读(284) 评论(0) 推荐(1) 编辑
摘要:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 每个测试用 阅读全文
posted @ 2020-03-05 16:10 RioTian 阅读(206) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示