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

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    自省改过
    c语言学习教程1之预定义代码
    tqdm进度条管理
    React-i18next切换中英文
    React怎样实现点击其他地方隐藏弹出的菜单
    遍历对象再取值,获得新值
    Web 用户体验设计提升指南
    antd vue form
    echarts 内容显示值在图中显示,不显示交互效果,只是静态图
    element-ui中el-table根据浏览器的缩放自适应宽度
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9984368.html
Copyright © 2011-2022 走看看