Supermarket 并查集
来源:互联网 发布:程序员的逻辑题 编辑:程序博客网 时间:2024/05/22 07:08
题目意思是 输入N组数 每组数前面一个是价值 后面一个是它的保质期 所以问在保质期之内最多卖多少钱
并查集 真心难想 都当成贪心了 哎 这个题 主要是把输进来的一对 按照价值由大到小排序 然后找到保质期的根 找到 sum后加上它的价值 然后把这个根减去一 所以再找下一个
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
4 50 2 10 1 20 2 30 17 20 1 2 1 10 3 100 2 8 2 5 20 50 10
Sample Output
80185
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.
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#define M 10020
using namespace std;
int n;
int par[M];
void init(int n)
{
for(int i = 0; i < M; i++)
par[i] = i;
}
struct node
{
int pi;
int di;
};
node super[M];
int fond(int x)//找根
{
return x == par[x] ? x : fond(par[x]);
}
bool cmp(node x, node y)
{
return x.pi > y.pi;
}
int main()
{
while(~scanf("%d",&n))
{
init(n);
int sum = 0;
for( int i = 0; i < n; i++)
scanf("%d%d",&super[i].pi,&super[i].di);
sort(super,super+n,cmp);
for( int i = 0; i < n; i++)
{
int temp = fond(par[super[i].di]);
if(temp > 0)
{
sum += super[i].pi;
par[temp] = temp -1;
}
}
printf("%d\n",sum);
}
return 0;
}
0 0
- Supermarket 并查集
- Supermarket -- 贪心 + 并查集
- pku 1456 Supermarket(并查集扩展)
- poj 1456 Supermarket (贪心, 并查集)
- POJ 1456 Supermarket【贪心 + 并查集】
- poj 1456 - Supermarket(贪心+并查集)
- Supermarket 并查集或贪心
- poj 1456 Supermarket (贪心+并查集)
- POJ 1456 Supermarket【贪心+并查集】
- POJ 1456 Supermarket [贪心+并查集]
- 【POJ】1456 Supermarket 并查集
- Supermarket poj 1456 (贪心,并查集)
- Supermarket(并查集(活用))
- POJ-1456 Supermarket【贪心+并查集】
- POJ 1456 Supermarket(贪心算法,可用并查集优化)
- 【经典贪心】poj 1456 Supermarket (贪心, 并查集)
- Supermarket poj 1456 贪心+并查集优化
- poj 1456 Supermarket(并查集维护区间)
- ArchLinux安装教程
- JSP九大对象:内置对象
- Android第九讲——网络(四) 文件的下载(单线程下载、多线程下载)
- caffe安装遇到的问题总结
- 自定义View
- Supermarket 并查集
- JVM系列文章(五):Javac编译与JIT编译
- 学习OC有感而发
- uva 11549 Calculator Conundrum 周期,哇!这也能过
- 开篇 奋斗
- 关于caffe安装中的一些小问题
- JavaScript原型链
- hive调用Linux的shell命令测试
- Linux kernel过滤网络数据包