Joint Stacks---hdu5818(栈模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5818
有3个操作pop,push,merge A B;
引入一个新的栈C,每次合并的时候就把A和B合并到C上,然后把A和B都清空. push还是按正常做,
pop时注意当遇到要pop的栈为空时,因为题目保证不会对空栈进行pop操作,所以这时应直接改为对C栈进行pop操作.
这样做因为保证每个元素最多只在一次合并中被处理到,pop和push操作当然也是每个元素只做一次,所以总复杂度是O(N)的;
#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <stack>
#include <vector>
#include <queue>
using namespace std;
#define N 105
#define met(a, b) memset(a, b, sizeof(a)) typedef long long LL; struct node
{
int Id, num;
node(){}
node(int Id, int num) : Id(Id), num(num){}
}; int main()
{
int n, tCase = ;
while(scanf("%d", &n) , n)
{
stack<node> a;
stack<node> b;
stack<node> c;
stack<node> t;
printf("Case #%d:\n", tCase++);
for(int i=; i<=n; i++)
{
char s1[], s2[];
int num;
scanf("%s", s1);
if(strcmp(s1, "push") == )
{
scanf("%s %d", s2, &num);
if(s2[] == 'A')
a.push(node(i, num));
else
b.push(node(i, num));
}
else if(strcmp(s1, "pop") == )
{
scanf("%s", s2);
if(s2[] == 'A')
{
if(!a.empty())
{
node p = a.top();a.pop();
printf("%d\n", p.num);
}
else
{
node p = c.top();c.pop();
printf("%d\n", p.num);
}
}
else
{
if(!b.empty())
{
node p = b.top();b.pop();
printf("%d\n", p.num);
}
else
{
node p = c.top();c.pop();
printf("%d\n", p.num);
}
}
}
else
{
node p, q;
scanf("%s %s", s1, s2);
while(!a.empty() && !b.empty())
{
p = a.top();
q = b.top();
if(p.Id > q.Id)
{
t.push(p);
a.pop();
}
else
{
t.push(q);
b.pop();
}
}
while(!a.empty())
{
p = a.top();
a.pop();
t.push(p);
}
while(!b.empty())
{
p = b.top();
b.pop();
t.push(p);
} while(!t.empty())
{
p = t.top();
t.pop();
c.push(p);
}
}
}
}
return ;
}
Joint Stacks---hdu5818(栈模拟)的更多相关文章
- HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)
题意:有两个栈A和B,有3种操作:push,pop,merge.前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则. 分析:显然,我们 ...
- 暑假练习赛 004 E Joint Stacks(优先队列模拟)
Joint StacksCrawling in process... Crawling failed Time Limit:4000MS Memory Limit:65536KB 64 ...
- HDU - 5818 Joint Stacks 比较大の模拟,stack,erase
https://vjudge.net/problem/HDU-5818 题意:给你两个栈AB,有常规push,pop操作,以及一个merge操作,merge A B 即将A.B的元素按照入栈顺序全部出 ...
- hdu-5818 Joint Stacks(模拟)
题目链接: Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- 多校7 HDU5818 Joint Stacks
多校7 HDU5818 Joint Stacks 题意:n次操作.模拟栈的操作,合并的以后,每个栈里的元素以入栈顺序排列 思路:开三个栈,并且用到了merge函数 O(n)的复杂度 #include ...
- HDU 5818 Joint Stacks(联合栈)
HDU 5818 Joint Stacks(联合栈) Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- HDU5818 Joint Stacks
Joint Stacks Time Limit: 8000/ ...
- 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(线段树模拟)
题目链接:hdu_5818_Joint Stacks 题意: 给你两个栈,多了个合并操作,然后让你模拟 题解: 很容易想到O(1)的单个栈操作,O(n)的合并操作,这样肯定超时,所以我们要将时间复杂度 ...
随机推荐
- ubuntu 上安装vnc server
Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作 ...
- 使用 Splash
Splash 简介与安装 Splash Lua 脚本 Splash 对象属性 Splash 对象方法 Splash API 调用 Splash 负载均衡
- mybatis 之 parameterType="java.util.HashMap">
/** * 根据goods_no 和 goods_id 来查询商品信息 * * @param goodsNos * @return */ public List<Goods> getGoo ...
- iOS应用内支付(IAP)的那些坑
本文转载至 http://blog.devtang.com/2013/04/07/tricks-in-iap/ 前言 udacity 中的在线课程 <How to build a startup ...
- Android Studio Error:Connection timed out: connect.解决方案
遇到了这样的错误: Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the ...
- Root用户安装MariaDB到 /usr/local/mysql
参考地址: http://www.zhdba.com/mysqlops/2013/08/16/mariadb-cn_1001/ https://mariadb.com/kb/en/mariadb/in ...
- Dockerfile的一些demo
tomcat7.0_jdk1.6 #继承用户创建的sshd镜像FROM yatho:sshd_ubuntu #创建者的基本信息 MAINTAINER yatho (yat_ho@163.com) #设 ...
- 【CF815D】Karen and Cards 单调栈+扫描线
[CF815D]Karen and Cards 题意:一张卡片有三个属性a,b,c,其上限分别为A,B,C,现在有n张卡片,定义一张卡片能打败另一张卡片当且仅当它的至少两项属性要严格大于另一张的对应属 ...
- 9.3Django
2018-9-3 13:56:18 开始进行Django!!!! 2018-9-3 14:48:25 出去玩去了!!啦啦啦! Django还是很好玩的! 贴上笔记 day60 2018-04-27 1 ...
- 对Aspose.Cells Excel文件操作的扩展
工作中对Excel操作的需求很是常见,今天其他项目组的同事在进行Excel数据导入时,使用Aspose.Cells Excel 遇到了些问题. 刚好闲来不忙,回想自己用过的Excel文件操作,有NPO ...