POJ 1456 Supermarket
2016-05-27 11:39
330 查看
Supermarket
Description
A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the sale begins. Each product takes precisely one unit of time
for being sold. A selling schedule is an ordered subset of products Sell ≤ Prod such that the selling of each product x∈Sell, according to the ordering of Sell, completes before the deadline dx or just when dx expires. The profit of the selling schedule is
Profit(Sell)=Σx∈Sellpx. An optimal selling schedule is a schedule with a maximum profit.
For example, consider the products Prod={a,b,c,d} with (pa,da)=(50,2), (pb,db)=(10,1), (pc,dc)=(20,2), and (pd,dd)=(30,1). The possible selling schedules are listed in table 1. For instance, the schedule Sell={d,a} shows that the selling of product d starts
at time 0 and ends at time 1, while the selling of product a starts at time 1 and ends at time 2. Each of these products is sold by its deadline. Sell is the optimal schedule and its profit is 80.
Write a program that reads sets of products from an input text file and computes the profit of an optimal selling schedule for each set of products.
Input
A set of products starts with an integer 0 <= n <= 10000, which is the number of products in the set, and continues with n pairs pi di of integers, 1 <= pi <= 10000 and 1 <= di <= 10000, that designate the profit and the selling deadline of the i-th product.
White spaces can occur freely in input. Input data terminate with an end of file and are guaranteed correct.
Output
For each set of products, the program prints on the standard output the profit of an optimal selling schedule for the set. Each result is printed from the beginning of a separate line.
Sample Input
Sample Output
Hint
The sample input contains two product sets. The first set encodes the products from table 1. The second set is for 7 products. The profit of an optimal schedule for these products is 185.
题意:
有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间。
问销售的最大利润。
解题思路:
贪心的思想,将商品的价值从大到小排序,找到销售的最大期限,用flag数组标记,如果它的期限没有被占用,就在该天销售,如果占用,则从它的前一天开始向前查找有没有空闲的日期,如果有则占用。这样就可以得到最大销售量。
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 11303 | Accepted: 4980 |
A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the sale begins. Each product takes precisely one unit of time
for being sold. A selling schedule is an ordered subset of products Sell ≤ Prod such that the selling of each product x∈Sell, according to the ordering of Sell, completes before the deadline dx or just when dx expires. The profit of the selling schedule is
Profit(Sell)=Σx∈Sellpx. An optimal selling schedule is a schedule with a maximum profit.
For example, consider the products Prod={a,b,c,d} with (pa,da)=(50,2), (pb,db)=(10,1), (pc,dc)=(20,2), and (pd,dd)=(30,1). The possible selling schedules are listed in table 1. For instance, the schedule Sell={d,a} shows that the selling of product d starts
at time 0 and ends at time 1, while the selling of product a starts at time 1 and ends at time 2. Each of these products is sold by its deadline. Sell is the optimal schedule and its profit is 80.
Write a program that reads sets of products from an input text file and computes the profit of an optimal selling schedule for each set of products.
Input
A set of products starts with an integer 0 <= n <= 10000, which is the number of products in the set, and continues with n pairs pi di of integers, 1 <= pi <= 10000 and 1 <= di <= 10000, that designate the profit and the selling deadline of the i-th product.
White spaces can occur freely in input. Input data terminate with an end of file and are guaranteed correct.
Output
For each set of products, the program prints on the standard output the profit of an optimal selling schedule for the set. Each result is printed from the beginning of a separate line.
Sample Input
4 50 2 10 1 20 2 30 1 7 20 1 2 1 10 3 100 2 8 2 5 20 50 10
Sample Output
80 185
Hint
The sample input contains two product sets. The first set encodes the products from table 1. The second set is for 7 products. The profit of an optimal schedule for these products is 185.
题意:
有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间。
问销售的最大利润。
解题思路:
贪心的思想,将商品的价值从大到小排序,找到销售的最大期限,用flag数组标记,如果它的期限没有被占用,就在该天销售,如果占用,则从它的前一天开始向前查找有没有空闲的日期,如果有则占用。这样就可以得到最大销售量。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 10000 + 10; struct P { int pi, di; }p[maxn]; int n; bool flag[maxn]; int cmp(P a, P b) { return a.pi > b.pi; } int main() { while (scanf("%d", &n) != EOF){ for (int i = 0; i < n; i++){ scanf("%d%d", &p[i].pi, &p[i].di); } sort(p, p + n, cmp); int sum = 0; int j; memset(flag, 0, sizeof(flag)); for (int i = 0; i < n; i++){ for (j = p[i].di; j > 0; j--){ if (!flag[j]){ sum += p[i].pi; flag[j] = 1; break; } } } printf("%d\n", sum); } return 0; }
相关文章推荐
- CDH调试oozie报错To enable Oozie web console install the Ext JS library.
- solver参数说明
- ML数学之矩阵奇异值分解及其应用
- 垃圾收集器
- 第二章、Hadoop之完全分布式安装
- 一起来学Android Studio:(五)导入 jar 包和第三方开源库方法
- IOS 自定义 无限图片轮播器开源库
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- 基于JavaScript FileReader上传图片显示本地链接
- canvas刮刮卡在三星s3和一些android4.1系统的手机上不能使用的问题
- 进程间通信之共享内存(Share Memory)
- 2016-5-27:实验室第二天
- iOS 自定义照相机
- HTTP协议及报文分析
- iOS知识---针对多个显示内容空间不定内容长度的显示问题Content Hugging 和 Content Compression Resistance
- 轻量web服务器开发日记10-server结构体的实现
- Ehcache详细解读
- 快捷开发 Android通用流行框架大全
- 技术题材收集