zoukankan      html  css  js  c++  java
  • 题解——Codeforces Round #507 (based on Olympiad of Metropolises) T1 (模拟)

    暴力模拟即可

    就是情况略多

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int n,a,b,num[40],pos,ans=0;
    int main(){
      scanf("%d %d %d",&n,&a,&b);
      for(int i=1;i<=n;i++)
        scanf("%d",&num[i]);
        if(n%2==1){
        pos=n/2+1;
        if(num[pos]==2)
          ans+=min(a,b);
        for(int i=pos-1,j=pos+1;i>=1;i--,j++){
          if(num[i]==num[j]&&num[i]!=2&&num[j]!=2)
            continue;
          else if(num[i]!=num[j]&&num[i]==0){
            if(num[j]==1){
              printf("-1");
              return 0;
            }
            else{
              ans+=a;
            }
          }
          else if(num[i]!=num[j]&&num[i]==1){
            if(num[j]==0){
              printf("-1");
              return 0;
            }
            else{
              ans+=b;
            }
          }
          else if(num[i]!=num[j]&&num[i]==2){
            if(num[j]==1){
              ans+=b;
            }
            else if(num[j]==0){
              ans+=a;
            }
          }
          else if(num[i]==num[j]&&num[i]==2&&num[j]==2){
            ans+=min(a,b)*2;
          }
        }
      }
      else{
        pos=n/2;
        for(int i=pos,j=pos+1;i>=1;i--,j++){
          if(num[i]==num[j]&&num[i]!=2&&num[j]!=2)
            continue;
          else if(num[i]!=num[j]&&num[i]==0){
            if(num[j]==1){
              printf("-1");
              return 0;
            }
            else{
              ans+=a;
            }
          }
          else if(num[i]!=num[j]&&num[i]==1){
            if(num[j]==0){
              printf("-1");
              return 0;
            }
            else{
              ans+=b;
            }
          }
          else if(num[i]!=num[j]&&num[i]==2){
            if(num[j]==1){
              ans+=b;
            }
            else if(num[j]==0){
              ans+=a;
            }
          }
          else if(num[i]==num[j]&&num[i]==2&&num[j]==2){
            ans+=min(a,b)*2;
          }
        }
      }
      printf("%d",ans);
    }
  • 相关阅读:
    mysql语句-DDL语句
    Web框架本质
    HTTP协议那些事儿(Web开发补充知识点)
    利用random模块生成验证码
    前端小练习
    常用模块collections
    强大的图片展示插件,JQuery图片预览展示插件
    笔记本电脑清除BIOS密码
    js中的new Option默认选中
    使用PHPMailer发送邮件
  • 原文地址:https://www.cnblogs.com/dreagonm/p/9596028.html
Copyright © 2011-2022 走看看