zoukankan      html  css  js  c++  java
  • 2016陕西省赛 Rui and her sequences

    2016陕西省赛 Rui and her sequences

    题目链接:http://oj.xjtuacm.com/contest/4/problem/36/

    题目大:将一个只含0,1,2的数组按不递减排序,仅有两种操作1.将所有的2置前,所有的0置后,花费a;2.将两个数交换,花费b.问最小花费.

    贪心

    提示里的Please ignore the first operation!什么鬼(╯‵□′)╯︵┻━┻

    代码如下:

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #define N 100005
    using namespace std;
    int n,x,y,a[N],num[3];
    struct node{
        int n[3];
        void init(){
            memset(n,0,sizeof(n));
        }
    }A,B,C;
    int main(void){
        while(~scanf("%d%d%d",&n,&x,&y)){
            int cost=0;
            num[0]=num[1]=num[2]=0;
            for(int i=0;i<n;++i){
                scanf("%d",&a[i]);
                num[a[i]]++;
            }
    
            A.init(),B.init(),C.init();
            for(int i=0;i<n;++i){
                if(i<num[0])A.n[a[i]]++;
                else if(i<num[0]+num[1])B.n[a[i]]++;
                else if(i<num[0]+num[1]+num[2])C.n[a[i]]++;
            }
            int one=min(A.n[1],B.n[0]),two=min(A.n[2],C.n[0]);
            cost=y*(A.n[1]+A.n[2]+max(B.n[2],C.n[1]));
    
            //cost=min(cost,x+y*max(num[0],num[2]));
            printf("%d
    ",cost);
        }
    }
  • 相关阅读:
    Ruby自学笔记(二)— Ruby的一些基础知识
    Ruby自学笔记(一)— 基本概况
    Tomcat基础教程(四)
    Excel导入
    构建API
    序列化
    图片上传(练习)
    发邮件
    发短信
    Excel表导出
  • 原文地址:https://www.cnblogs.com/barrier/p/6841651.html
Copyright © 2011-2022 走看看