博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu6375 度度熊学队列
阅读量:5290 次
发布时间:2019-06-14

本文共 1224 字,大约阅读时间需要 4 分钟。

度度熊学队列

解题思路

STL大法好。直接用deque,但是N的范围很大,如果直接开那么多的deque会爆内存,所以用map< int, deque< int>>,多组数据,记得清空map。

代码如下

#include 
#define INF 0x3f3f3f3fusing namespace std;typedef long long ll;inline int read(){ int res = 0, w = 0; char ch = 0; while(!isdigit(ch)){ w |= ch == '-', ch = getchar(); } while(isdigit(ch)){ res = (res << 3) + (res << 1) + (ch ^ 48); ch = getchar(); } return w ? -res : res;}const int N = 100005;map
> mp;int main(){ int n, q; while(scanf("%d%d", &n, &q)!= EOF){ for(int i = 1; i <= n; i ++) mp[i].clear(); for(int i = 1; i <= q; i ++){ int opt; opt = read(); if(opt == 1){ int u, w, val; u = read(), w = read(), val = read(); if(w) mp[u].push_back(val); else mp[u].push_front(val); } else if(opt == 2){ int u, w; u = read(), w = read(); if(!mp[u].empty()){ if(w){ printf("%d\n", mp[u].back()); mp[u].pop_back(); } else{ printf("%d\n", mp[u].front()); mp[u].pop_front(); } } else printf("-1\n"); } else { int u, v, w; u = read(), v = read(), w = read(); if(w) mp[u].insert(mp[u].end(), mp[v].rbegin(), mp[v].rend()); else mp[u].insert(mp[u].end(), mp[v].begin(), mp[v].end()); mp[v].clear(); } } } return 0;

转载于:https://www.cnblogs.com/whisperlzw/p/11211982.html

你可能感兴趣的文章
洛谷 P3984 高兴的津津
查看>>
洛谷 P1308 统计单词数
查看>>
使用GitHub
查看>>
1.25回溯 n皇后问题,素数环,困难的串
查看>>
大量界面刷新时手动Dispose也是有必要的
查看>>
机电传动控制第三周学习笔记
查看>>
删除.gitignore中的在version control中的文件
查看>>
java精确计算、精确计算工具类
查看>>
操作系统实验零——操作系统实验环境准备
查看>>
centos服务器搭建javaweb项目步骤
查看>>
Docker入坑指南之EXEC
查看>>
XmlNode和XmlElement(转)
查看>>
python3+ros+telnet+telnetlib
查看>>
head first 设计模式读书笔记 之 策略模式
查看>>
并发数据结构:迷人的原子
查看>>
JS—操作符优先级
查看>>
获取日期的相关方法
查看>>
怎样理解阻塞非阻塞与同步异步的区别?
查看>>
TFS 服务端默认端口更改
查看>>
C#字符串string的常用使用方法
查看>>