hdu 5818 (优先队列) Joint Stacks
题目:这里
题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个
栈里的元素全部压进前面的那个栈里面,并且压入后前面的栈的所有元素按其进栈顺序排列然后后面的栈变为了空。
push和pop操作都还好,就是优先队列或者栈的操作,主要是merge操作,如果啊按照题目来模拟每次将后面的栈元素取出放入前面的栈,可能会超时,而超时的主要因素是每次都将
元素多的栈压入了元素少的栈,可以每次默认将栈1元素压入栈2,然后根据情况判断栈1和栈2到底哪个是栈a哪个是栈b,这样就解决了可能超时的问题,具体看代码。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
using namespace std; const int M = 1e5 + ;
struct node{
int x,y;
friend bool operator < (node a,node b){
return a.y<b.y;
}
}num[M];
priority_queue<node>a[]; int main()
{
int n,tem=;
while (~scanf("%d",&n)&&n){
printf("Case #%d:\n",++tem);
while (!a[].empty()) a[].pop();
while (!a[].empty()) a[].pop();
int ans=,flag=;
while (n--){
char str[],op;
scanf("%s",str);scanf(" %c",&op);
if (strcmp(str,"push")==){
scanf(" %d",&num[++ans].x);
num[ans].y=ans;
if (op=='A') a[flag].push(num[ans]);
else a[flag^].push(num[ans]);
}
else if (strcmp(str,"pop")==){
if (op=='A') printf("%d\n",a[flag].top().x),a[flag].pop();
else printf("%d\n",a[flag^].top().x),a[flag^].pop();
}
else{
char ch;
scanf(" %c",&ch);
while (!a[].empty()){
a[].push(a[].top());
a[].pop();
}
if (op=='A'&&flag==) flag=;
if (op=='B'&&flag==) flag=;
}
}
}
return ;
}
hdu 5818 (优先队列) Joint Stacks的更多相关文章
- 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 题目链接: 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(联合栈)
HDU 5818 Joint Stacks(联合栈) Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- HDU 5818 Joint Stacks
Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- 暑假练习赛 004 E Joint Stacks(优先队列模拟)
Joint StacksCrawling in process... Crawling failed Time Limit:4000MS Memory Limit:65536KB 64 ...
- 2016暑假多校联合---Joint Stacks (STL)
HDU 5818 Problem Description A stack is a data structure in which all insertions and deletions of e ...
- 多校7 HDU5818 Joint Stacks
多校7 HDU5818 Joint Stacks 题意:n次操作.模拟栈的操作,合并的以后,每个栈里的元素以入栈顺序排列 思路:开三个栈,并且用到了merge函数 O(n)的复杂度 #include ...
- HDU5818 Joint Stacks
Joint Stacks Time Limit: 8000/ ...
随机推荐
- AndroidImagePicker 的使用
github地址 https://github.com/easonline/AndroidImagePicker 效果图
- [solr] - spell check
solr提供了一个spell check,又叫suggestions,可以用于查询输入的自动完成功能auto-complete. 参考文献: https://cwiki.apache.org/conf ...
- 四、Spring——Spring MVC
Spring MVC 1.Spring MVC概述 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分配给响应的处理器处 ...
- Scanner概述
* Scanner:用于接收键盘录入数据. * System类下有一个静态的字段: * public static final InputStream in; 标准的输入流,对应着键盘录入. * * ...
- [踏得网]HTML5在线教程阅读进度记录
2017年1月3日18:12:19http://techbrood.com/h5b2a?p=html-canvas-states 2017年1月3日17:10:11http://techbrood.c ...
- Storm Topology及分组原理
Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来, ...
- MyBatis Sql语句中的转义字符
1.在xml的sql语句中,不能直接用大于号.小于号要用转义字符 如果用小于号会报错误如下: org.apache.ibatis.builder.BuilderException: Error cre ...
- scikit-learn中的主成分分析(PCA)的使用
1.函数原型及参数说明 class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False) 参数说明: n_comp ...
- 透明(颜色)渐变背景(颜色透明背景),兼容IE8
filter: progid:DXImageTransform.Microsoft.gradient (GradientType=0, startColorstr=#00000000, endColo ...
- 'libxml/tree.h' file not found
看看Header Search Paths 为 '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Dev ...