POJ-4110:圣诞老人的礼物-Santa Clau’s Gifts

import java.util.Scanner;

// 4110:圣诞老人的礼物-Santa Clau’s Gifts
public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int maxW = input.nextInt();
        int[][] p = new int[n][2];
        double[][] density = new double[n][2];

        // 获得输入并计算密度
        for (int i = 0; i < n; i++) {
            p[i][0] = input.nextInt();
            p[i][1] = input.nextInt();

            density[i][0] = i;
            density[i][1] = 1.0 * p[i][0] / p[i][1];
        }

        // 对密度进行排序
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                double[] swap = new double[2];
                if (density[i][1] < density[j][1]) {
                    swap = density[i];
                    density[i] = density[j];
                    density[j] = swap;
                }
            }
        }

        int sumW = 0;
        double value = 0;

        for (int i = 0; i < n; i++) {
            int index = (int) density[i][0];
            if (sumW >= maxW) {
                break;
            }

            if (p[index][1] + sumW <= maxW) {
                sumW += p[index][1];
                value += p[index][0];
            } else {
                value += ((maxW - sumW) * density[i][1]);
                sumW = maxW;
            }
        }

        System.out.println(value);
    }
}
时间: 2024-10-10 14:00:19

POJ-4110:圣诞老人的礼物-Santa Clau’s Gifts的相关文章

4110:圣诞老人的礼物-Santa Clau’s Gifts(贪心算法)

查看 提交 统计 提示 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走.圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果. 输入 第一行由两个部分组成,分别为糖果箱数正整数n(1 <= n <= 100),驯鹿能承受的最大重量正整数w(0 < w < 10000),两个数用空格隔开.其余n行每行对

OpenJudge百炼习题解答(C++)--题4110:圣诞老人的礼物-Santa Clau’s Gifts

题: 总时间限制:  1000ms  内存限制:  65536kB 描述 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走.圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果. 输入 第一行由两个部分组成,分别为糖果箱数正整数n(1 <= n <= 100),驯鹿能承受的最大重量正整数w(0 < w < 10000),两个数用空格隔开.其余n行每行对应一箱糖果,由两部分组

再见北理工:忆北京研究生的编程时光

两年前,我本科毕业写了这样一篇文章:< 回忆自己的大学四年得与失 >,感慨了自己在北理软院四年的所得所失:两年后,我离开了帝都,回到了贵州家乡,准备开启一段新的教师生涯,在此也写一篇文章纪念下吧! 还是那句话:这篇文章是写给自己的,希望很多年之后,回想起自己北京的六年时光,也是美好的回忆.文章可能有点长,但希望大家像读小说一样耐心品读,看完之后也能温馨一笑或唏嘘摇头,闭上眼睛想想你自己的大学生活吧,很享受的! 同时,这也是自己的第200篇原创文章,三年半的时间,说长不长,说短不短,这期间不论是

poj 3710 Christmas Game(树上的删边游戏)

Christmas Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1967   Accepted: 613 Description Harry and Sally were playing games at Christmas Eve. They drew some Christmas trees on a paper: Then they took turns to cut a branch of a tre

[2015-12-24]OMG美语每日笔记-Santa Claus

坚持学习英语,OMG口语非常长不错,坚持每天整理.学英语坚持最重要,学英语坚持最重要,学英语坚持最重要说三遍! Santa Claus is coming to town 圣诞老人进城来! There are so many Christmas songs about Santa .Santa Claus is coming to town.Is a classic example. 关于圣诞老人的歌很多,圣诞老人进城来,是一个比较经典的歌. Santa Baby 圣诞宝贝 I love lis

POJ 3160 Father Christmas flymouse

Father Christmas flymouse Time Limit: 1000ms Memory Limit: 131072KB This problem will be judged on PKU. Original ID: 316064-bit integer IO format: %lld      Java class name: Main After retirement as contestant from WHU ACM Team, flymouse volunteered

POJ 1091 跳蚤(分解质因数 + 容斥 + 大数)

跳蚤 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8910   Accepted: 2676 Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向

UVA 291 The House Of Santa Claus DFS

题目: In your childhood you most likely had to solve the riddle of the house of Santa Claus. Do you remember that the importance was on drawing the house in a stretch without lifting the pencil and not drawing a line twice? As a reminder it has to look

Educational Codeforces Round 79 D Santa&#39;s Bot

  被教育场 题意:先等概率选一个人,再从他想要礼物里等概率选一个,再独立于前两次选择,选一个人,他想要的礼物也被选中,则该组合有效,求组合有效的分数概率(模意义下) 玩一下两个样例应该就能出来知道咋算,虽然我第一个样例是跑了两重循环得出 7/8,拼凑起来才勉强理解的题意. 但知道咋算不一定会code啊. 我就是啊. 模拟了分数的加法乘法运算,通分约分,肯定要WA啊,因为到后面分子分母越来越大存不下. 但实际上,两个分数在某个模数意义下相加可以直接转化,即   x/y+u/v  == x*inv