zoukankan      html  css  js  c++  java
  • 多校7 HDU5818 Joint Stacks

     1 多校7 HDU5818 Joint Stacks
     2 题意:n次操作。模拟栈的操作,合并的以后,每个栈里的元素以入栈顺序排列
     3 思路:开三个栈,并且用到了merge函数
     4 O(n)的复杂度
     5 
     6 #include <bits/stdc++.h>
     7 using namespace std;
     8 #define LL long long
     9 const int inf = 0x3f3f3f3f;
    10 const int MOD =998244353;
    11 const int N =100010;
    12 #define clc(a,b) memset(a,b,sizeof(a))
    13 const double eps = 1e-7;
    14 void fre() {freopen("in.txt","r",stdin);}
    15 void freout() {freopen("out.txt","w",stdout);}
    16 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
    17 int n;
    18 int sta[3][N],top[3];
    19 char op[10],s[5],s1[5];
    20 int x[N];
    21 void fun(){
    22     top[0]=top[1]=top[2]=0;
    23     for(int i=0;i<n;i++){
    24         scanf("%s%s",op,s);
    25         int a=s[0]-'A';
    26         if(op[1]=='u'){
    27            scanf("%d",&x[i]);
    28            sta[a][top[a]++]=i;
    29         }
    30         else if(op[1]=='o'){
    31             if(!top[a]) a=2;
    32             printf("%d
    ",x[sta[a][--top[a]]]);
    33         }
    34         else {
    35             scanf("%s",s1);
    36             top[2]=merge(sta[0],sta[0]+top[0],sta[1],sta[1]+top[1],sta[2]+top[2])-sta[2];
    37             top[0]=top[1]=0;
    38         }
    39     }
    40 }
    41 int main(){
    42     int cas=1;
    43     while(~scanf("%d",&n),n){
    44         printf("Case #%d:
    ", cas++);
    45         fun();
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    centos 6 升级gcc
    linux fdisk 分区
    centos使用163的源
    工作流发布成功但不能自动启动
    可怕的断电
    FTP 之 550 permission denied
    Track & Trace
    AutoKey思想的應用(二)
    Windows登錄過程淺析
    snapshot.exe出現異常
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5764617.html
Copyright © 2011-2022 走看看