HDU6375双端队列
要点分析:
1.本题可以使用C++STL中的deque双端队列来方便解决(底层是一个双向的链表)
2.值得注意的是N的上限为150000,所以直接开这么大的空间会超内存,可以配合map一起使用
关于双端队列的声明:
使用<queue>头文件
主要用法:
deque.push_back(val);
deque.push_front(val);
deque.pop_front();
deque.pop_back();
deque.front();
deque.back();
deque.clear();
本题代码:
1 #include<iostream>
2 #include<queue>
3 #include<map>
4 using namespace std;
5
6 //const int N = 150005;
7 map<int, deque<int> > q;
8
9 void read(int &x){
10 char ch = getchar();x = 0;
11 for (; ch < '0' || ch > '9'; ch = getchar());
12 for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
13 }
14
15 int main(){
16 int N, Q;
17 while(scanf("%d%d", &N, &Q) != EOF){
18 for(int i = 1; i <= N; i++) q[i].clear();
19 for(int i = 1; i <= Q; i++){
20 int x;
21 read(x);
22 if(x == 1){
23 int u, w, val;
24 read(u);
25 read(w);
26 read(val);
27 if(w == 0){
28 q[u].push_front(val);
29 }else{
30 q[u].push_back(val);
31 }
32 }else if(x == 2){
33 int u, w;
34 read(u);
35 read(w);
36 if(q[u].empty()){
37 printf("-1\n");
38 }else{
39 if(w == 0){
40 int temp = q[u].front();
41 q[u].pop_front();
42 printf("%d\n", temp);
43 }else{
44 int temp = q[u].back();
45 q[u].pop_back();
46 printf("%d\n", temp);
47 }
48 }
49 }else{
50 int u, v, w;
51 read(u);
52 read(v);
53 read(w);
54 if(w == 0){
55 while(!q[v].empty()){
56 int temp = q[v].front();
57 q[v].pop_front();
58 q[u].push_back(temp);
59 }
60 }else{
61 while(!q[v].empty()){
62 int temp = q[v].back();
63 q[v].pop_back();
64 q[u].push_back(temp);
65 }
66 }
67 }
68 }
69 }
70 return 0;
71 }
HDU6375双端队列的更多相关文章
- lintcode二叉树的锯齿形层次遍历 (双端队列)
题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出 ...
- lintcode 滑动窗口的最大值(双端队列)
题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为 ...
- STL---deque(双端队列)
Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结 ...
- hdu-5929 Basic Data Structure(双端队列+模拟)
题目链接: Basic Data Structure Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- HDU 4286 Data Handler --双端队列
题意:有一串数字,两个指针,然后一些添加,删除,反转,以及移动操作,最后输出序列. 解法:可以splay做,但是其实双端队列更简便. 维护三个双端队列LE,MI,RI分别表示[L,R]序列左边,[L, ...
- 双端队列(单调队列)poj2823 区间最小值(RMQ也可以)
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 41844 Accepted: 12384 ...
- Java 集合深入理解(10):Deque 双端队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...
- BZOJ2457 BeiJing2011 双端队列
[问题描述] Sherry现在碰到了一个棘手的问题,有N个整数需要排序. Sherry手头能用的工具就是若干个双端队列. 她需要依次处理这N个数,对于每个数,Sherry能做以下两件事 ...
- Fork/Join框架之双端队列
简介 ForkJoinPool管理着ForkJoinWorkerThread线程,ForkJoinWorkerThread线程内部有一个双端队列,这个双端队列主要由一个数组queue.数组下标queu ...
随机推荐
- php curl的使用心得
php的curl有很多参数,整理一下其中的常用参数的作用 1.CURLOPT_SSL_VERIFYHOST 设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name).译者注:公 ...
- 突破JAVA万人面试,懂多线程者得天下
突破JAVA万人面试,懂多线程者得天下 在面试中,求职者会遇到很多棘手的问题,其中关于"线程安全"."线程同步"."线程死锁"等方面的面 ...
- Jmeter(6)命令行执行
Jmeter执行方式有2种:GUI和非GUI模式 GUI:在Windows电脑上运行,图形化界面,可直接查看测试结果,但是消耗压力机资源较高 非GUI:通过命令行执行,无图形化界面,不方便查看测试结果 ...
- 马赛克密码破解——GitHub 热点速览 Vol.50
作者:HelloGitHub-小鱼干 "xx"(爆粗口) 这个词是最能体现本人看到本周 GitHub 热点的心情的.那一天,看到用图片处理技术还原马赛克密码的 Depix 便惊为天 ...
- 老哥你能写篇 SpringCloud Alibaba 全家桶吗? 看视频太累 太枯燥了 !
最喜欢的一句话: 1.01的365次方=37.78343433289 >>>1 0.99的365次方= 0.02551796445229, 每天进步一点点的目标,贵在坚持 前端时间有 ...
- 图解JanusGraph系列 - 关于JanusGraph图数据批量快速导入的方案和想法(bulk load data)
大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...
- draggable()拖拽时限制移动区域
jQuery-UI为我们提供了一个非常便捷的拖拽方法:draggable(),在使用此方法时,我们可能会希望控件只在某一区域中移动,不能被拖出边界,这样的话我们可以使用下面的方法: 调用draggab ...
- npm 各种常用命令
全局删除 node-gyp npm -g uninstall node-gyp 再次安装依赖 npm install 更改包内容后重建 npm rebuild 清除缓存 npm cache clean ...
- 深度学习论文翻译解析(十六):Squeeze-and-Excitation Networks
论文标题:Squeeze-and-Excitation Networks 论文作者:Jie Hu Li Shen Gang Sun 论文地址:https://openaccess.thecvf.co ...
- 在 xunit 测试项目中使用依赖注入
在 xunit 测试项目中使用依赖注入 Intro 之前写过几篇 xunit 依赖注入的文章,今天这篇文章将结合我在 .NET Conf 上的分享,更加系统的分享一下在测试中的应用案例. 之所以想分享 ...