zoukankan      html  css  js  c++  java
  • UOJ#152盘子序列

    题面君

    那这是一题比较标准的单调栈的题目,维护一下单调栈并访问就好了

     1 int n;//因为我写了十几行头文件。。头文件就删了,大家自己加一下吧。。
     2 int a[100005];
     3 int s1[100005],s2[100005],t1,t2;
     4 
     5 int get(){//快读
     6     int x=0,f=1;
     7     char ch=getchar();
     8     while(ch<'0'||ch>'9'){
     9         if(ch=='-')f=-1;
    10         ch=getchar();
    11     }
    12     while(ch>='0'&&ch<='9'){
    13         x=x*10+ch-'0';
    14         ch=getchar();
    15     }
    16     return x*f;
    17 }
    18 
    19 int main(){
    20     while(scanf("%d",&n)!=EOF){//停止条件
    21         t1=t2=0;
    22         for(int i=1;i<=n;i++){
    23             a[n-i+1]=get();//倒着读入
    24         }
    25         for(int i=1;i<=n;i++){
    26             while(t2&&s2[t2]>a[i]){//维护单调性
    27                 s1[++t1]=s2[t2--];
    28             }
    29             if(!s2[t2]||a[i]>s2[t2]){
    30                 s2[++t2]=a[i];
    31             }
    32         }
    33         bool ok=true;
    34         while(t2)s1[++t1]=s2[t2--];
    35         for(int i=1;i<t1;i++){
    36             if(s1[i]<s1[i+1]){//若危险输出J
    37                 printf("J
    ");
    38                 ok=false;
    39                 break;
    40             }
    41         }
    42         if(ok){
    43             printf("Y
    ");//反之输出Y
    44         }
    45     }
    46     return 0;
    47 }

    嗯白白

  • 相关阅读:
    Jzoj3895 数字对
    Jzoj3895 数字对
    Jzoj3894 改造二叉树
    Jzoj3894 改造二叉树
    Jzoj3883 线段树
    Jzoj3883 线段树
    Jzoj3882 近邻
    Jzoj3882 近邻
    第三十一天 how can I 坚持
    第三十天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/hahaha2124652975/p/11193630.html
Copyright © 2011-2022 走看看