HDU 1195
双端BFS
/*************************************************************************
> File Name: 2.cpp
> Author:yuan
> Mail:
> Created Time: 2014年11月25日 星期二 23时33分09秒
*********************...
分类:
其他好文 时间:
2014-11-26 14:34:14
阅读次数:
244
原题链接:https://oj.leetcode.com/problems/lru-cache/
题目大意:设计操作系统中资源管理算法所使用的一种数据结构,即LRU算法。是一道偏向于综合的题。
方法:一个哈希表+一个双端链表
思路:一方面LRU Cache算法要求可以快速访问结点,所以我们很容易想到使用哈希表或者数组。另一方面,该算法要求在达到容量上限时,删除最久未访问的数据结点。这要求所设...
分类:
系统相关 时间:
2014-11-16 17:24:44
阅读次数:
182
双向队列Time Limit: 1000MS Memory limit: 65536K题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。现在给你一系列的操作,请输出最后队列的状态;命令格式:LINXX表示一个整数,命令代表左边进队操.....
分类:
其他好文 时间:
2014-11-06 21:44:58
阅读次数:
182
LinkedList实现了List和Deque接口,其中Deque是一个双端队列,可以在头部和尾部两端添加和删除元素,因此LinkedList既可以当作先进先出的队列,也可以当作后进先出的栈。
LinkedList采用双向链表方式实现,因此插入、删除元素效率比较高,但不支持随机访问。
多线程环境下LinkedList不能保证线程安全,因此对其结构修改的操作应当程序员来保证线程安全,其迭代器支持fail-fast,迭代过程中试图发现是否发生修改,若修改了容器则抛出ConcurrentModificationE...
分类:
其他好文 时间:
2014-11-04 21:14:20
阅读次数:
338
题意:有一串数字,两个指针,然后一些添加,删除,反转,以及移动操作,最后输出序列。解法:可以splay做,但是其实双端队列更简便。维护三个双端队列LE,MI,RI分别表示[L,R]序列左边,[L,R]这段区间的值和[L,R]右边的值。然后维护一个revd标记表示[L,R]内的数是否被翻转了,翻转了的...
分类:
其他好文 时间:
2014-11-02 22:18:31
阅读次数:
234
双向链表:
就是有双向指针 即 双向的链域
链结点的结构:
┌────┬────┬────────┐
│data│next│previous│
└────┴────┴────────┘
双向链表不必是双端链表(持有对最后一个链结点的引用),双端链表插入时是双向的
有两条链:一条从头到尾,一条从尾到头,删除遍历时也是双向的
/**
* 双向链表
*
* @author s...
分类:
编程语言 时间:
2014-10-26 01:41:27
阅读次数:
255
双端链表:
双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用rear
这样在链尾插入会变得非常容易,只需改变rear的next为新增的结点即可,而不需要循环搜索到最后一个节点
所以有insertFirst、insertLast
删除链头时,只需要改变引用指向即可;删除链尾时,需要将倒数第二个结点的next置空,
而没有一个引用是指向它的,所以还是需要循环来读取操作...
分类:
编程语言 时间:
2014-10-24 16:38:29
阅读次数:
242
STL中所谓的双端队列的实现,从源码中可以一览其复杂性。...
分类:
编程语言 时间:
2014-10-12 01:20:27
阅读次数:
449
思路: 贪心,
每次删除最上面的边。。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int M = 200008;
deque q;
vector vi;
int first_edge[M],next_edge[M],to[M],ty[M],sum;...
分类:
其他好文 时间:
2014-10-11 10:31:35
阅读次数:
207
题目描述: 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。分析: 这可以用双端LIS方法来解决,先求一遍从左到右的,再求一遍从右到左的。最后从里面选出和最大的即可。代码实现:#include using namespace std;int DoubleEndLI.....
分类:
其他好文 时间:
2014-10-09 01:24:37
阅读次数:
215