- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是混合牛奶问题
Merry Milk Makers 公司从农民那里购买牛奶,将其包装成极具吸引力的 1 瓶和 2 瓶装,然后将这些牛奶卖给杂货店,这样我们每个人都可以享用美味的麦片和牛奶来开始新的一天。
由于牛奶包装是一项很难赚钱的行业,因此保持尽可能低的成本非常重要。帮助 Merry Milk Makers 以最便宜的方式购买农民的牛奶。 MMM 公司拥有一个非常有才华的营销部门,并且准确地知道他们每天需要为客户包装多少牛奶。
该公司与几家农场主签订了契约(Contract),他们可以从这些农场主那里购买牛奶,并且每个农场主都有(可能)不同的价格向包装厂出售牛奶。当然,一群奶牛每天只能产那么多牛奶,所以农民们已经知道他们有多少牛奶可用。
每天,Merry Milk Makers 可以从每个农民那里购买整数单位的牛奶,这个数字总是小于或等于农民的限制(并且可能是那个农民的全部产品,没有生产,或两者之间的任何整数)。
给定:
The Merry Milk Makers 的每日牛奶需求量每个农民每单位牛奶的成本每个农民可获得的牛奶量计算 Merry Milk Makers 必须花费的最低金额才能满足他们对牛奶的日常需求。
第 1 行:两个整数,N 和 M。
第一个值 N (0 <= N <= 2,000,000) 是 Merry Milk Makers 每天需要的牛奶量。第二个 M,(0 <= M <= 5,000)是他们可以从农民那里购买的数量。
第 2 行到 M+1:
接下来的 M 行每行包含两个整数:Pi 和 Ai。Pi (0 <= Pi <= 1,000) 是农民 i 收取的美分价格。Ai (0 <= Ai <= 2,000,000) 是农夫 i 每天可以卖给 Merry Milk Makers 的牛奶量。
我的解决方案:
我的解决方案是将农民的牛奶价格和他们拥有的牛奶数量存储在 HashMap
中。只要还有牛奶要买,我就会将 HashMap
中的最低价 * 最低价牛奶的数量添加到成本中,因为我对 ArrayList
储存牛奶的成本。因为购买的牛奶可能比需要的多,所以我有一个 if 语句
检查如果购买的牛奶比需要的多,就会减去额外的费用。然后我从 ArrayList
代码:
该代码适用于所有测试用例,但最后一个测试用例除外,在该测试用例中有太多数据无法放入问题中,因此我将其链接到 Google 文档。
输入和输出:https://docs.google.com/document/d/10I3b0z17kP_LZzD2lBlH-Igoe6NPybZleD9tNYonqSQ/edit?usp=sharing
/*
ID: henry.d2
LANG: JAVA
TASK: milk
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class milk
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new FileReader("milk.in"));
String[] components = br.readLine().split(" ");
int n = Integer.parseInt(components[0]); // Get the amount of milk that Merry Milk Makers wants per day (N)
int m = Integer.parseInt(components[1]); // Get the number of farmers that they may buy from (M)
Map<Integer, Integer> farmerAndPrice = new HashMap<Integer, Integer>(); // HashMap that stores the prices of milk and quantities
List<Integer> prices = new ArrayList<Integer>(); // ArrayList that stores the prices for milk
// Read in P(i) (The price in cents that farmer i charges) and A(i) (The amount of milk that farmer i can send to MMM per day)
for (int i = 0; i < m; i++)
{
String[] pAndA = br.readLine().split(" ");
int Pi = Integer.parseInt(pAndA[0]);
int Ai = Integer.parseInt(pAndA[1]);
farmerAndPrice.put(Pi, Ai); // Add price and quantity to HashMap
prices.add(Pi); // Add price to ArrayList
}
Collections.sort(prices);
int milkToBuy = 0;
int cost = 0;
while (milkToBuy < n) // The farmers still have milk to buy from
{
cost += farmerAndPrice.get(prices.get(0)) * prices.get(0);
milkToBuy += farmerAndPrice.get(prices.get(0));
if (milkToBuy > n) // If we buy more milk than we need
{
cost -= (milkToBuy - n) * prices.get(0);
}
System.out.println(prices.toString());
prices.remove(0);
}
File file = new File("milk.out"); // Output to milk.out
PrintWriter printWriter = new PrintWriter(file);
printWriter.println(cost);
printWriter.close();
}
}
最佳答案
我敢肯定,您没有正确考虑当多个奶农以相同价格出售牛奶时会发生什么。
您使用 HashMap 的方式意味着您将覆盖以前农民的值。
关于java - USACO 培训 : Mixing Milk fails on the last Case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494068/
我经常在 ATS 中看到使用 case、case+ 或 case- 形成的 case 表达式。有什么区别? 最佳答案 如果表达式不详尽,使用 case 会发出警告,case+ 会产生错误,而 case
我有一个导入时全部大写的表,我想将其转换为正确的大小写。你们用什么脚本来完成这个? 最佳答案 这个函数: “正确大小写”由空格分隔的所有“大写”单词 保留“小写单词” 即使对于非英语字母也能正常工作
#include int main() { switch(2) { case 1: if(1)
我已经四处寻找了一段时间,如果我使用的术语不当,请原谅我... 代码的目标是在输入为 0 时更新 Aout1 和 Aout0,输出对应于 7 段显示,但出现以下错误: “错误 (10170):Four
我正在尝试按照 PostgreSQL 手册中的说明进行操作。 PostgreSQL: Documentation: 9.1: Control Structures 我的 PostgreSQL 服务器是
我有一个状态机,其中有几个非常相似的状态。我可以为每个状态编写它,如下例所示: module CHECK_FSM ( GO, DONE, CLK, RESETN ); input GO;
如何使用或创建案例? 就像是: string str; case (str) "abc" || "dfg": begin //some code end "yfg":
这个问题已经有答案了: Are double and single quotes interchangeable in JavaScript? (23 个回答) 已关闭 9 年前。 我正在学习Java
汽车 Make | Model | Year | Color Honda | Accord | 12 | Red Lexus | IS | 14 |
如何使用当前 case 语句的值跳转到 switch-case 条件下的另一个 case 语句? 是否可以使用 switch case 来实现这种事情,或者是否有其他实现方式? 有可能实现吗?如果没有
我理解下面的代码。 var day = 2; switch (day) { case 1: document.write("Monday"); break;
这是有效的。 object FilesToDFDS { case class Student(id: Int, name: String, dept:String) def main(
我对 VHDL 还是个新手。我需要在 CASE 语句中为多个信号赋值,如下所示: CASE input24 IS WHEN "00" THEN output0
我有这个 case 语句,它给出了一个错误“变量 constant1 未使用”。它似乎忽略了变量并返回了第一行,因此变量显然没有范围。如果我用数字 1 替换常量,那么它就可以工作。在 Elixir 中
在 MySQL 中,是否可以在 SELECT 子句中有两个 CASE 语句,其中第二个 CASE 语句依赖于第一个 CASE 语句? 例如,考虑以下查询: SELECT CASE WHEN `user
我正在尝试一个挑战,我需要获得一个随机数,并在没有重复的情况下打印数字内的数字总和:例如,123 将打印 6 ( 1 + 2 + 3 ),而 32111 将做同样的事情(因为我们没有在我们的总和中添加
当有人试图更新当前未存储在我的散列中的值时,我想立即返回 when 'add' 而无需重新启动整个 case声明,因为我已经知道他们想要添加并且不想再次提示他们。 有没有一种方法可以在不重新启动整个案
老 C 程序员可以在 Swift 方面得到一些帮助。 我不太了解 if-case 语法。例如: if case 20...30 = age { print ("in range.") } cas
老 C 程序员可以在 Swift 方面得到一些帮助。 我不太了解 if-case 语法。例如: if case 20...30 = age { print ("in range.") } cas
我有一个 ArrayList,其中包含以下字符串:[name, age, gender, salary] . 有没有办法可以将 ArrayList 中的值用作 case 表达式? 显而易见的答案是否定
我是一名优秀的程序员,十分优秀!