• 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 }

    嗯白白

  • 相关阅读:
    地铁结队开发(一)
    构建之法(一)——软件工程师的成长
    第二周学习总结
    新的开始
    开学第一周作业
    第一周学习总结
    软件工程第六周总结
    软件工程第五周总结
    清明节第三天
    清明节第二天
  • 原文地址:https://www.cnblogs.com/hahaha2124652975/p/11193630.html
Copyright © 2020-2023  润新知