• 1231: ykc买零食


    1231: ykc买零食
    时间限制: 1 Sec  内存限制: 128 MB

    题目描述

    ykc的班级准备举行班级聚会,而身为生活委员的ykc要为此准备好零食,这天,ykc来到了学校的新起点超市,在转了3个小时候,ykc决定买以下所有的n种零食,其中每种零食的价格可能不一样,而刚好超市有活动,每买m种零食,就可以任选一种不超过k元的零食并免费赠送,而ykc想尽可能的省钱,求ykc的最小花费

    输入

    输入包含多组数据,以EOF结束,

    每组首先输入三个正整数,n,m,k,其中(n,m,k<100)

    后输入n个数表示每种零食的价格ai(ai<1000)

    输出

    输出一个正整数,表示最小花费

    样例输入

    4 3 2
    1 2 3 4
    7 3 8
    1 2 3 4 5 6 7
     

    样例输出

    8
    21

    import java.util.ArrayList;
    import java.util.Scanner;
     
     
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            ArrayList<String> w = new ArrayList<String>();
             
            while(sc.hasNext()) {
                int n = sc.nextInt();
                int m = sc.nextInt();
                int k = sc.nextInt();
                 
                int fif = 0;
                int num = n/(m+1)==0?0:n/(m+1);
                int minmax[] = new int[num];
                int a[] = new int[n];
                int state[] = new int[n];
                for (int i = 0; i < n; i++) {
                    a[i] = sc.nextInt();
                    fif += a[i];
                }
                loop:for (int i = 0; i < minmax.length; i++) {
                    int y = 0;
                    while(state[y] == 1)
                        y++;
                    for (int j = 1; j < a.length; j++) {
                        if(state[j] == 1)
                            continue;
                        if(a[y]>k) {
                            if(a[j]<=k)
                                y = j;
                        }else {
                            if(a[j]>a[y]&&a[j]<=k)
                                y = j;
                        }
                    }
                    if(a[y]>k) 
                        a[y] = 0;
                    state[y] = 1;
                    minmax[i] = y;
                }
                for (int j = 0; j < minmax.length; j++) {
                    fif -= a[minmax[j]];
                }
                w.add(fif+"");
            }
            sc.close();
            for(String attribute : w) {
                System.out.println(attribute);
            }
        }
    }
    /**************************************************************
        Problem: 1231
        User: 20161514325
        Language: Java
        Result: 正确
        Time:245 ms
        Memory:13320 kb
    ****************************************************************/
    

      

  • 相关阅读:
    养生与健康
    vue + elementui 使用多选按钮实现单选功能
    生活小方
    和业务相关的工具函数
    vue + element ui开发过程中需要注意的几个点
    【转】webpack中关于source map的配置
    【转】移动前端手机输入法自带emoji表情字符处理
    webpack相关
    vue项目优化
    运维集群架构演变之美 【转】
  • 原文地址:https://www.cnblogs.com/-rainbow-/p/10589356.html
Copyright © 2020-2023  润新知