题目大意:n个物品,每个物品有一定的保质期d和一定的利润p,一天只能出售一个物品,问最大利润是多少?

题解:这是一个贪心的题目,有两种做法。

1 首先排序,从大到小排,然后每个物品,按保质期从后往前找,找到第一个没被占用的日期,然后出售。

code:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N=1e4+;
struct stu{
ll a,b;
bool friend operator < (const stu &x,const stu &y){
if(x.a!=y.a) return x.a>y.a;
else return x.b>y.b;
}
}arr[N];
bool mark[N];
int main(){
ll n;
while(cin>>n){
for(ll i=;i<=n;i++){
scanf("%d%d",&arr[i].a,&arr[i].b);
}
memset(mark,,sizeof mark);
ll sum=;
sort(arr+,arr++n);
for(ll i=;i<=n;i++){
if(mark[arr[i].b]==) {
sum+=arr[i].a;
mark[arr[i].b]=;
}
else {
for(ll j=arr[i].b;j>=;j--){
if(!mark[j]){
sum+=arr[i].a;
mark[j]=;
break;
}
}
}
}
cout<<sum<<endl;
} return ;
}

2 用并查集来维护一下日期,如果说日期a被占用了,fa[a]=a-1,就是往前提上一天,

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N=1e4+;
struct stu{
ll a,b;
bool friend operator < (const stu &x,const stu &y){
if(x.a!=y.a) return x.a>y.a;
else return x.b>y.b;
}
}arr[N];
ll fa[N];
ll find(ll x){
if(fa[x]==-) return x;
else return fa[x]=find(fa[x]);
}
int main(){
ll n;
while(cin>>n){
for(ll i=;i<=n;i++){
scanf("%lld%lld",&arr[i].a,&arr[i].b);
}
sort(arr+,arr++n);
memset(fa,-,sizeof fa);
ll sum=;
for(ll i=;i<=n;i++){
ll c=find(arr[i].b);
if(c>){
sum+=arr[i].a;
fa[c]=c-;
}
}
cout<<sum<<endl;
}
return ;
}

反思:这是完全是一个贪心的题目,并查集只是一种让他跑的更快的工具而已,可能是专项训练的缘故,思维被束缚了,不敢往贪心方向想....

Supermarket POJ - 1456(贪心)的更多相关文章

  1. Supermarket POJ - 1456 贪心+并查集

    #include<iostream> #include<algorithm> using namespace std; const int N=1e5; struct edge ...

  2. (并查集 贪心思想)Supermarket -- POJ --1456

    链接: http://poj.org/problem?id=1456 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...

  3. POJ 1456 (贪心+并查集) Supermarket

    有n件商品,每件商品有它的利润和售出的最后期限,问能够得到的最大利润是多少 这道题和 HDU 1789 Doing Homework again 几乎一模一样,只不过这个是求最的扣分,本题是求最大利润 ...

  4. Day5 - H - Supermarket POJ - 1456

    A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold ...

  5. POJ - 1456 贪心+并查集

    做法一:直接贪心,按照利润排序,然后直接尽量给每个活动安排到最晚的时间即可.时间复杂度O(n * d)当d都为10000时,很容易超时.由于这题数据比较水,所有贪心未超时. AC代码 #include ...

  6. Supermarket POJ - 1456

    A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold ...

  7. poj 1456 贪心+STL

    题意:有n个商品,每个商品如果能在截止日期之前售出就会获得相应利益,求能获得的最大利益 一开始对每个时间进行贪心,后来发现后面的商品可以放到之前来卖,然后就wa了 这里就直接对价格排序,把物品尽量放到 ...

  8. POJ - 1456 贪心 堆常用操作 注意细节

    题意:给定n个商品的deadline和profit,求每天卖一件的情况下的最大获利 显然是一道贪心 按deadline从小到大排序好,动态维护小根(profit)堆的大小<=当前deadline ...

  9. POJ 1456 Supermarket 区间问题并查集||贪心

    F - Supermarket Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. Chrome80调整SameSite策略对IdentityServer4的影响以及处理方案(翻译)

    首先,好消息是Goole将于2020年2月份发布Chrome 80版本.本次发布将推进Google的"渐进改良Cookie"策略,打造一个更为安全和保障用户隐私的网络环境. 坏消息 ...

  2. Android 文章合集 200+ 篇

    code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 镇楼 2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 ...

  3. sql 模块 pymysql 数据库操作

    1. 添加一个部门. import pymysql def main(): no = int(input('编号: ')) name = input('名字: ') loc = input('所在地: ...

  4. 一位萌新Google冲浪的开始

    这一切的开始可能都来源于对 百度 各方面的不满吧(确实不咋滴) 于是开始对Google感冒,上必应https://cn.bing.com/去搜了下“国内如何上Google”,上面也是众说纷纭,莫衷一是 ...

  5. 最大子矩阵hdu1559(二维前缀和)

    最大子矩阵hdu1559 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大. Input 输入数据的第一行为一个正整数T,表示有 ...

  6. 1027 Colors in Mars (20 分)

    People in Mars represent the colors in their computers in a similar way as the Earth people. That is ...

  7. 原来rollup这么简单之插件篇

    大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 大家的支持是我创作的动力. 计划 rollup系列打算一章一章的放出 ...

  8. 从String 聊源码解读

    @ 目录 源码实现 构造方法 equals 其他方法 常见面试题 你真的了解String吗?之前一篇博客写jvm时,就觉得String可以单独拎出来写一篇博客,毕竟几乎所有的面试都是以String开始 ...

  9. 分享layui的table的一些小技巧,前端分页

    最近一直在折腾报表,期间使用了layui的table做展示(版本号:2.5.5) 起初:以为是查询结果出来后,前端和服务端分页一弄就完事了,参考例子,但是sql写得太长太长了,翻页困难,数据库是老旧的 ...

  10. MTK Android 源码目录分析

    Android 源码目录分析 Android 4.0 |-- abi (application binary interface:应用二进制接口)|-- art (average retrieval ...