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

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    nSStirng、NSArray、以及枚举(Method小集合)
    http://www.cnblogs.com/beniao/category/172407.html Flex & .NET
    开发帮助文档Api
    JavaScript初学者应注意的七个细节
    javascript实现可以拖动的层示例(层拖动,兼容IE/FF)
    利用IE自带的WebBrowser进行打印
    asp 循环语句
    Form.elements[i]的使用
    Web控件tbSkin主题的应用
    asp 过程总结
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9984368.html
Copyright © 2011-2022 走看看