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 ...
随机推荐
- 8 -- 深入使用Spring -- 2...3 使用@Resource配置依赖
8.2.3 使用@Resource配置依赖 @Resource 位于javax.annotation包下,是来自Java EE规范的一个Annotation,Spring直接借鉴了该Annotatio ...
- HDOJ 4276 The Ghost Blows Light(树形DP)
Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The tomb consists of N room ...
- js中对象的深度复制
// 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...
- window下JBoss7 安装部署
0x01 下载安装 1.下载地址: http://www.jboss.org/jbossas/downloads 2.解压缩:选择一个安装目录解压 jboss-as-7.1.1.Final.zip 3 ...
- flask + mysql写的简单监控系统
这里以监控内存使用率为例,写的一个简单demo性程序,具体操作根据51reboot提供的教程写如下. 一.建库建表 创建falcon数据库: mysql> create database fal ...
- gitlab数据迁移
由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足,出现无法访问gitlab了. 磁盘空间: /home有1.8T的空间一直没用上! 现在打算将原有代码目录迁移到新目 ...
- php 建立 搜索 分词树
<?php /** * @author: xiaojiang 20140107 * php 建立分词树 * */ class Tree{ public $w = ''; public $subT ...
- 文件系统的挂载(2)---挂载rootfs文件系统
一.目的 本文主要讲述linux内核rootfs文件系统的挂载过程,内核版本为3.10. rootfs是基于内存的文件系统,没有实际的存储设备,所有操作都在内存中完成.为了保证linux内核的精简性, ...
- 【Spring源码分析系列】bean的加载
前言 以 BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beans.xml"));为例查看bean的加载过 ...
- 熟悉使用ConfigParser库读写配置文件
Python的配置文件 配置文件 setting.ini文件是一个纯文本 [DataBase1] username = admin passwors = root [DataBase2] hostna ...