HDU - 5818 Joint Stacks 比较大の模拟,stack,erase
https://vjudge.net/problem/HDU-5818
题意:给你两个栈AB,有常规push,pop操作,以及一个merge操作,merge A B 即将A、B的元素按照入栈顺序全部出栈并推入栈A(merge B A 即反)
题解:用一个C来辅助,每一次merge将AB中的数据依次压入C中(如何依次?用vector<pair<int,int> >,second 存入栈的id,先按id弹出到tmp,再压入c),然后清空。之后A B若pop到底则从C pop(题目保证C不会pop到底)
技巧:erase(并没用)
list<int>::iterator it;
for (it = lt.begin(); it != lt.end(); ) {
if (*it % == )
it = lt.erase(it);//自动返回下一个元素的地址,不用再主动前移指针
else
++it;
}
坑:读char、char[]==""
ac代码:
#define _CRT_SECURE_NO_WARNINGS
#include<set>
#include<vector>
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
typedef long long ll;
//ll a[100005];
vector<pair<int,int> > a, b;
vector<int> c;
int main() {
int n;
int kase=;
while (cin >> n) {
if (n == )break;
int cnt = ; a.clear(); b.clear(); c.clear();
printf("Case #%d:\n", ++kase);
for (int i = ; i <= n; i++) {
char s[];
scanf("%s", s);
if (s[] == 'u') {//push
char aa[];
scanf("%s", &aa);
int x ; scanf("%d", &x);
if (aa[] == 'A') {
a.push_back(make_pair(x,cnt++));
}
else {
b.push_back(make_pair(x,cnt++));
}
}
else if (s[] == 'o') {//pop
char aa[];
scanf("%s", &aa);
if (aa[] == 'A') {
if (!a.empty()) {
printf("%d\n", a.back().first);
a.pop_back();
}
else {
printf("%d\n", c.back());
c.pop_back();
}
}
else {
if (!b.empty()) {
printf("%d\n", b.back().first);
b.pop_back();
}
else {
printf("%d\n", c.back());
c.pop_back();
}
}
}
if (s[] == 'e') {//merge
vector<int> tmp;
char aa[];
scanf("%s", &aa); scanf("%s", &aa);
{
while (!a.empty() || !b.empty()) {
if (a.empty()) {
while (!b.empty()) {
tmp.push_back(b.back().first);
b.pop_back();
}
}
if (b.empty()) {
while (!a.empty()) {
tmp.push_back(a.back().first);
a.pop_back();
}
}
if (!a.empty() && !b.empty()) {
if (a.back().second > b.back().second) {
tmp.push_back(a.back().first);
a.pop_back();
}
else {
tmp.push_back(b.back().first);
b.pop_back();
}
}
}
while (!tmp.empty()) {
c.push_back(tmp.back());
tmp.pop_back();
}
}
}
}
}
}
HDU - 5818 Joint Stacks 比较大の模拟,stack,erase的更多相关文章
- HDU 5818 Joint Stacks(联合栈)
HDU 5818 Joint Stacks(联合栈) Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- HDU 5818 Joint Stacks (优先队列)
Joint Stacks 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5818 Description A stack is a data stru ...
- HDU 5818 Joint Stacks
Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- hdu 5818 Joint Stacks (优先队列)
Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)
题意:有两个栈A和B,有3种操作:push,pop,merge.前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则. 分析:显然,我们 ...
- HDU 5818 Joint Stacks(左偏树)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5818 [题目大意] 给出两个栈A B(初始时为空),有三种操作: push.pop.merge. ...
- 暑假练习赛 004 E Joint Stacks(优先队列模拟)
Joint StacksCrawling in process... Crawling failed Time Limit:4000MS Memory Limit:65536KB 64 ...
- HDU 5818:Joint Stacks(stack + deque)
http://acm.hdu.edu.cn/showproblem.php?pid=5818 Joint Stacks Problem Description A stack is a data ...
- hdu-5818 Joint Stacks(模拟)
题目链接: Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
随机推荐
- ubuntu13.04 搭建 Nginx + PHP + PHP-FPM + Mysql (lnmp) 环境
Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...
- vuejs使用FormData对象,ajax上传图片文件
我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...
- iOS 关于信鸽推送点击推送通知的处理
最近的项目中使用了推送模块,使用的是企鹅帝国的信鸽推送服务,关于具体怎么推送的,证书如何设置,我不再赘述,一来开发文档中已经讲的非常清楚,二来在网上一搜的话也能搜到一大堆:在这里主要写下关于推送的通知 ...
- 【安全开发】java安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- 【RF库Collections测试】Remove Duplicates
Name:Remove DuplicatesSource:Collections <test library>Arguments:[ list_ ]Returns a list witho ...
- ajax做省市联动
原理: 当select.jsp页面打开时,向服务器发送异步请求,得到所有省份的名称(文本数据).然后使用每个省份名称创建<option>,添加到<select name=”provi ...
- 汉字按首字母排序(javascript,php,mysql实现)
1.javascript实现 var a = ["啊","得啊_123","得啊_0124","波啊","婆& ...
- Barcode.js功能强大的条码生成jQuery插件
本文转载自http://www.uedsc.com/barcode-js.html Barcode.js是一个基于jQuery库的插件,用于绘制条形码或者二维码,能够生成基于DIV+CSS或者Canv ...
- luanet分布式lua框架
luanet最初只是一个网络框架,它简单的封装了一些网络相关接口然后暴露到lua中,让lua可以构建简单的网络应用. 随着我的手游服务器的开发,我发现在C语言中要实现一个简洁易用的RPC调用接口并不容 ...
- 【开源整理】.Net开源项目资源大全
汇总了.NET平台开源的工具类库,新的内容在不断更新中.内容借鉴了博客园.伯乐在线.GitHub等平台. (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的 ...