![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
杂杂的
薄层
努力就有收获~
展开
-
顺序栈的实现和c++模板
stack栈的基本操作:q.push(); 向栈压入一个元素q.top(); 返回栈顶元素q.pop(); 删除栈顶元素,无返回值q.size(); 返回栈中元素的个数q.empty(); 判断栈是否为空,真则返回true,假则返回false顺序栈判断回文#include #include #include using namespace std;i原创 2017-03-07 11:53:02 · 344 阅读 · 0 评论 -
堆的自行实现和c++优先队列模板
堆分为最小堆和最大堆,堆其实就是一棵特殊的完全二叉树,最小堆得特点是,所有的父节点都比子节点的数值要小,最大堆则就是所有的父节点都比子节点的数值都要大,所以取最小堆(最大堆)的最小值(最大值),都是取根节点的数值,插入数据呢,都是在完全二叉树最深层和最右侧的那个节点下一位置插入,当删除最值或插入新值的时候,都会破坏这种特殊的特性,所以我们要对此进行特殊的调整有两种调整,一种是向上调整,即从下面原创 2017-03-07 10:33:39 · 407 阅读 · 0 评论 -
不常用的模拟链表
模拟链表的思想很简单,就是通过一个数组存储数据值,再开一个数组存储下标,来模拟链表中的next指针,从而实现插入,删除。通过right来记录,它的后继元素,当没有后继元素,它的right为-1。插入数据时,把数据存在data的len+1位置,然后再修改其right,下图是插入数据10的时候的变化。看代码吧~#include #include using原创 2017-03-06 22:09:46 · 273 阅读 · 0 评论 -
单链表的基本操作
详细请看代码#include #include #include using namespace std;typedef struct node{ int va; struct node *next;}Node, *LNode;int main(){ LNode p, q, l, L1, L2; int k, i, n, jk[100]; cin >> n; L原创 2017-03-06 18:11:21 · 382 阅读 · 0 评论 -
HDU-6058 Kanade's sum - 2017 Multi-University Training Contest - Team 3(思维+模拟链表)
Give you an array A[1..n]A[1..n]of length nn. Let f(l,r,k)f(l,r,k) be the k-th largest element of A[l..r]A[l..r]. Specially , f(l,r,k)=0f(l,r,k)=0 if r−l+1<kr−l+1<k. Give you kk , you need to calculate ∑nl=1∑nr=lf(l,r,k)∑l=1n∑r=lnf(l,r,k) There are T test原创 2017-08-01 20:09:27 · 402 阅读 · 0 评论 -
HDU-6215 Brute Force Sorting(思维、模拟链表)
2017 ACM/ICPC Asia Regional Qingdao OnlineBeerus needs to sort an array of NN integers. Algorithms are not Beerus's strength. Destruction is what he excels. He can destroy all unsorted numbers in the array simultaneously. A number A[i]A[i] of the array is原创 2017-11-11 16:21:10 · 446 阅读 · 0 评论 -
POJ-2823 && POJ-3250 (单调队列 && 单调栈)
poj-2823: 求n个数序列中的所有段长度为k的区间内的最大值和最小值。poj-3250: 求n个数序列中每个位置的右边的数小于其数值的个数,并且中间不能有大于等于它的数。poj-2823 下面这份代码只能在c++编译器下才能过,其它编译器超时,其实只需要在出队的时候加个二分优化就能过,但懒得改了,主要是学单调队列的做法。#include using namespace原创 2017-10-11 12:01:52 · 257 阅读 · 0 评论