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

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    codeforces 686A A. Free Ice Cream(水题)
    bzoj-1192 [HNOI2006]鬼谷子的钱袋(水题)
    poj-3254 Corn Fields(状压dp)
    poj-1185 炮兵阵地(状压dp)
    Notepad++ 小技巧
    使用 notepad++ 编辑器在行首、行尾添加字符
    查看数据库中有大写的表
    Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
    expect
    shell数组
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9984368.html
Copyright © 2011-2022 走看看