zoukankan      html  css  js  c++  java
  • 2017.2.18[codevs1170]NOIP2008提高组复赛T4双栈排序

    体面不贴

    这题一开始卡了我好久……策了好久贪心都判断不了无解情况……

    直到看了题解才发现自己有多傻逼……

    传送门:http://blog.csdn.net/kqzxcmh/article/details/9566813

    题解写的很清楚这里就不赘述了。

    两次AC,还行吧。

    关键是我太蒟蒻……

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 #define N 1010
     7 #define RG register
     8 #define inf 0x3f3f3f3f
     9 using namespace std;
    10 char ans[N];
    11 bool mat[N][N];
    12 int n,top1,top2,top,topo,inn[N],col[N],dp[N],sta1[N],sta2[N];
    13 inline int Min(RG const int &a,RG const int &b){return a>b?b:a;}
    14 inline int gi(){
    15     RG int x=0;RG char c=getchar();
    16     while(c<'0'||c>'9') c=getchar();
    17     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    18     return x;
    19 }
    20 inline bool dfs(RG int now){
    21     for (RG int i=1;i<=n;++i)
    22     if(mat[now][i]){
    23         if(!col[i]){
    24         col[i]=3-col[now];
    25         if(!dfs(i)) return 0;
    26         }
    27         else if(col[i]==col[now])
    28                 return 0;
    29     }
    30     return 1;
    31 }
    32 inline void out(){
    33     ++topo;
    34     if(sta1[top1]==topo&&top1){
    35     ans[++top]='b';
    36     --top1;
    37     }
    38     else{
    39     ans[++top]='d';
    40     --top2;
    41     }
    42 }
    43 inline void work(){
    44     n=gi();dp[n+1]=sta1[0]=sta2[0]=inf;
    45     for (RG int i=1;i<=n;++i) inn[i]=gi();
    46     for (RG int i=n;i>=1;--i) dp[i]=Min(dp[i+1],inn[i]);
    47     for (RG int i=1;i<n-1;++i)
    48     for (RG int j=i+1;j<n;++j)
    49         if(inn[j]>inn[i]&&dp[j+1]<inn[i])
    50         mat[i][j]=mat[j][i]=1;
    51     for (RG int i=1;i<=n;++i)
    52     if(!col[i]){
    53         col[i]=1;
    54         if(!dfs(i)){
    55         printf("0
    ");
    56         return;
    57         }
    58     }
    59     for (RG int i=1;i<=n;++i){
    60     if(col[i]<2){
    61         while(inn[i]>sta1[top1]) out();
    62         ans[++top]='a';
    63         sta1[++top1]=inn[i];
    64     }
    65     else{
    66         while(sta1[top1]==topo+1&&top1){
    67             ans[++top]='b';
    68             --top1;
    69         ++topo;
    70             }
    71         while(inn[i]>sta2[top2]) out();
    72         ans[++top]='c';
    73         sta2[++top2]=inn[i];
    74     }
    75     }
    76     while(top1||top2) out();
    77     for (RG int i=1;i<=top;++i) printf("%c ",ans[i]);
    78     putchar('
    ');
    79 }
    80 int main(){
    81     freopen("3114.in","r",stdin);
    82     freopen("3114.out","w",stdout);
    83     work();
    84     fclose(stdin);
    85     fclose(stdout);
    86     return 0;
    87 }
    View Code
  • 相关阅读:
    Spring boot unable to determine jdbc url from datasouce
    Unable to create initial connections of pool. spring boot mysql
    spring boot MySQL Public Key Retrieval is not allowed
    spring boot no identifier specified for entity
    Establishing SSL connection without server's identity verification is not recommended
    eclipse unable to start within 45 seconds
    Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
    macOS 下安装tomcat
    在macOS 上添加 JAVA_HOME 环境变量
    Maven2: Missing artifact but jars are in place
  • 原文地址:https://www.cnblogs.com/Super-Nick/p/6413541.html
Copyright © 2011-2022 走看看