道具的魅力值(贪心算法)
时间限制 : 1.000 sec 内存限制 : 128 MB
题目描述
在某网络游戏中提供了一个道具库,在道具库中每种道具均有若干件(数量已知),游戏玩家购买一件道具将获得一定的魅力值。
已知每种道具的价格和魅力值,请编写一个程序,在总价格不超过某个上限的情况下使得所购道具的魅力值之和达到最大。
输入
每组测试数据的输入有n+1行,n表示道具的种类。(n<=100,p<=10000)
第1行包含两个正整数,分别表示道具种类数n和总价值的上限p,两个数字之间用空格隔开。
第2行到第n+1行分别对应于第1种道具到第n种道具的信息,每1行包含三个正整数,两个数字之间用空格隔开,三个正整数分别表示某一种道具的数量、单个道具的价格和魅力值。
输出
每组测试数据的输出只有一行,即道具魅力值的最大和。
样例输入
3 10
2 2 3
1 5 10
2 4 12
样例输出
27
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;public class Main {static class tool implements Comparable<tool> {int num;int price;int value;double rate;public tool(int parseInt, int parseInt1, int parseInt2, double v) {super();num=parseInt;price=parseInt1;value=parseInt2;rate=v;}@Overridepublic int compareTo(tool o) {return Double.compare(o.rate,rate);}}public static void main(String[] args) {Scanner sc=new Scanner(System.in);List<tool>tools=new ArrayList<tool>();String[] arr = sc.nextLine().split(" ");int n=Integer.parseInt(arr[0]);int c=Integer.parseInt(arr[1]);//容量for(int i=0;i<n;i++){String[] msg=sc.nextLine().split(" ");tools.add(new tool(Integer.parseInt(msg[0]),Integer.parseInt(msg[1]),Integer.parseInt(msg[2]),Integer.parseInt(msg[2])*1.0/Integer.parseInt(msg[1])));}Collections.sort(tools);int sum=0;for(tool t:tools){if(c<t.price)continue;int k=0;for(int i=1;i<=t.num;i++){if(i*t.price>c)break;else k=i;}sum+=k*t.value;c-=k*t.price;}// for(tool t:tools){// System.out.println(t.num+" "+t.price+" "+t.value+" "+t.rate);// }System.out.println(sum);}
}
我的
在某网络游戏中提供了一个道具库,在道具库中每种道具均有若干件(数量已知),游戏玩家购买一件道具将获得一定的魅力值. 已知每种道具的价格和魅力值,请编写一个程序,在总价格不超过某个上限的情况下使得所购道 ... 目录 贪心算法介绍 贪心算法例子 1. 背包 2. 分糖果 3. 钱币找零 4. 区间覆盖 5. 区间覆盖的延伸:任务调度.教师排课 贪心算法经典应用 1. 霍夫曼编码 2. 最小生成树算法 3. 最 ... 第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ... 1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ... 来自:码海 前言 上篇一文学会动态规划解题技巧 被不少号转载了,其中发现有一位读者提了一个疑惑,在求三角形最短路径和时,能否用贪心算法求解.所以本文打算对贪心算法进行简单地介绍,介绍完之后我们再来看看 ... 我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ... 一.贪心算法介绍 1.贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 2.贪心算法不是对所有问题都 ... 介绍 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法 贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解 ... 贪心算法概念叙述 运用贪心算法求解问题时,会将问题分为若干个子问题,可以将其想象成俄罗斯套娃,利用贪心的原则从内向外依次求出当前子问题的最优解,也就是该算法不会直接从整体考虑问题,而是想要达到局部最优 ...道具的魅力值(贪心算法)相关推荐
最新文章
热门文章