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的更多相关文章

  1. HDU 5818 Joint Stacks(联合栈)

    HDU 5818 Joint Stacks(联合栈) Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  2. HDU 5818 Joint Stacks (优先队列)

    Joint Stacks 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5818 Description A stack is a data stru ...

  3. HDU 5818 Joint Stacks

    Joint Stacks Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. hdu 5818 Joint Stacks (优先队列)

    Joint Stacks Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  5. HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)

    题意:有两个栈A和B,有3种操作:push,pop,merge.前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则. 分析:显然,我们 ...

  6. HDU 5818 Joint Stacks(左偏树)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5818 [题目大意] 给出两个栈A B(初始时为空),有三种操作: push.pop.merge. ...

  7. 暑假练习赛 004 E Joint Stacks(优先队列模拟)

    Joint StacksCrawling in process... Crawling failed Time Limit:4000MS     Memory Limit:65536KB     64 ...

  8. HDU 5818:Joint Stacks(stack + deque)

    http://acm.hdu.edu.cn/showproblem.php?pid=5818 Joint Stacks Problem Description   A stack is a data ...

  9. hdu-5818 Joint Stacks(模拟)

    题目链接: Joint Stacks Time Limit: 8000/4000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Othe ...

随机推荐

  1. iOS开发--改变tableHeaderView的高度

    1.先获取tableHeaderView 2.设置它的frame 3.将该view设置回tableview UIView *view=tableView. tableHeaderView; view. ...

  2. [XPath] XPath 与 lxml (一)XPath 术语

    前言 这是一篇主要介绍 XPath 的文章,由于 JQuery 已经不支持 XPath,所以本文主要通过 Python 的 lxml.etree 来介绍 XPath. 什么是 XPath ? XPat ...

  3. [PyCharm] 设置自动启动时自动打开项目

    设置启动PyCharm时自动打开(或不打开)上次进行的项目: 选择 “Settings - General - Reopen last project on startup”,勾选该选项则启动时自动打 ...

  4. IDEA试用期结束激活问题

    1.试用期结束,出现IDEA License Activation界面 2.IntelliJ Idea 2017 免费激活方法 方法1. 到网站 http://idea.lanyus.com/ 获取注 ...

  5. PHP 搜索分词实现代码

    <?php /** * @author: xiaojiang 2014-01-08 * php 建立分词树 * */ class Tree{ public $w = ''; public $su ...

  6. Foxmail邮箱最新应用指南 --如何使用「邮件标签」?

    Foxmail邮箱最新应用指南--如何使用「邮件标签」? 最近看到很多的朋友收发电子邮件,现在我们帮助讲解下foxmail的标签功能,可以帮助我们整理我们的邮箱,让重要信息浮出水面. 1.鼠标右键邮件 ...

  7. jQuery Sizzle选择器(三)

    在Sizzle的入口方法Sizzle()中看到的一个根据浏览器来初始化document各个方法的函数setDocument(),接下来主要看一下这个方法都做了什么. 但之前有必要看一下它用到的一些Si ...

  8. javascript取querystring,存储为hash

    function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location ...

  9. 使用CMake编译跨平台静态库

    在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑.因为很多开源的程序,比如png,都是自带编译脚本的.我们可以使用下列脚本来进行编译:   . / con ...

  10. mysql optimize整理表碎片

    当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删 除操作后在数据文件中留下碎片所致.optimize table 可以去除删除操作后留下的数据文件碎片,减小文件尺寸,加快未 ...