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. 开启apache的server-status辅助分析工具

    在Apache的调优过程中,可以通过查看Apache提供的server-status(状态报告)来验证当前所设置数值是否合理,在httpd.conf文件中做如下设置来打开: #加载mod_status ...

  2. Mybatis -- 批量添加 -- insertBatch

    啦啦啦 ---------------InsertBatch Class : Dao /** * 批量插入perfEnvirons * * @author Liang * * 2017年4月25日 * ...

  3. 【代码审计】QYKCMS_v4.3.2 任意文件读取漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  4. 查看python中已安装的包有哪些

    新版本执行:pip list 老版本执行:pip freeze

  5. 新唐的开发环境的搭建,驱动以及BSP

    https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...

  6. 剑指offer面试题6:重建二叉树

    1.题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. public class Solution { public TreeNode reConstructBinaryTree(int ...

  7. 用layer插件实现tp3.2的分页

    主要需要用到  /layer/layer.js  这个, 现在一个tp前端视图/article/index.html <!DOCTYPE html> <html lang=" ...

  8. sea.js常用接口

    seajs.config 用来对 Sea.js 进行配置. seajs.config({ // 指定需要使用的插件 plugins: ['text', 'shim'], // 设置别名,方便调用 al ...

  9. 关于 CommonJS AMD CMD UMD 规范的差异总结(转)

    根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的. // foo.js var ...

  10. Visual Studio for Mac离线安装教程

    Visual Studio for Mac离线安装教程 可以在线安装,也可以离线安装(本次安装博主使用离线,在线安装失败了) 据说翻个墙就可以,有条件的就翻吧 没条件的我于是选择离线安装………… 离线 ...