zoukankan      html  css  js  c++  java
  • Codeforces Round #522 Div2C(思维)

    #include<bits/stdc++.h>
    using namespace std;
    int a[200007];
    int b[200007][7];
    int ans[200007];
    int main(){
        for(int i=1;i<=5;i++)
            b[1][i]=1;//第一个可以从1选到5
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=2;i<=n;i++){
            for(int j=1;j<=5;j++){//遍历a[i]
                for(int k=1;k<=5;k++){//遍历a[i-1]
                    if(j<k&&a[i]<a[i-1]&&b[i-1][k])//前一位可以选k,这一位才可以选j
                        b[i][j]=k;
                    else if(j>k&&a[i]>a[i-1]&&b[i-1][k])
                        b[i][j]=k;
                    else if(a[i-1]==a[i]&&j!=k&&b[i-1][k])
                        b[i][j]=k;
                }
            }
        }
        int flag=0;
        int x=0;
        for(int i=1;i<=5;i++){
            if(b[n][i]==0)
                continue;
            x=i;//i是a[n]的答案
            flag=1;
            for(int j=n;j>=1;j--){
                ans[j]=x;
                x=b[j][x];//b[j][x]装的上一位的答案,x是这一位的答案
            }
        }
        if(!flag)
            printf("-1");
        else{
            for(int i=1;i<=n;i++)
                printf("%d ",ans[i]);
        }
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    1025 反转链表
    Vue--修饰符
    Vue--watch
    Vue--防止页面闪烁
    Vue--过滤器
    Vue--自定义指令
    Vue--生命周期
    vue--父子组件传递数据
    vue--父子组件调用彼此的方法
    Celery--beat
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9984368.html
Copyright © 2011-2022 走看看