题目大意:

有n个商品,每个商品有价值和一个最后期限,过了这个期限该商品就不能卖出去了

问你如何去卖,能得到最大的收益。(每个东西卖一天,不能同时卖两种东西)

思路:

贪心: 先按价值对商品排序,价值相同按照日期排序(都是从大到小排序)

用一个数组来标记这一天是否已经卖过东西了(原先卖过的肯定价值要大,所以该次舍弃)

也就是说只要在1---商品的最大期限的这些天,每一天都挑可以卖出的最大价值的商品去卖

就能得到最大收益了

代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxs = 10000+5;
struct Goods
{
int value,deadline;
}goods[maxs];
int n;
bool vis[maxs];
int cmp(Goods a,Goods b)
{
if(a.value==b.value)
return a.deadline>b.deadline;
return a.value>b.value;
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d%d",&goods[i].value,&goods[i].deadline);
sort(goods,goods+n,cmp);//排序
int ans = 0;
memset(vis,false,sizeof(vis));//标记数组
for(int i=0;i<n;i++)
{
for(int j=goods[i].deadline;j>0;j--)
{
if(!vis[j])//如果这一天没有卖过东西
{
vis[j]=true;
ans+=goods[i].value;
break;
}
}
}
printf("%d\n",ans);
} return 0;
}

poj1456---贪心的更多相关文章

  1. poj1456(贪心+并查集)

    题目链接: http://poj.org/problem?id=1456 题意: 有n个商品, 已知每个商品的价格和销售截止日期, 每销售一件商品需要花费一天, 即一天只能销售一件商品, 问最多能买多 ...

  2. POJ1456贪心(set或者并查集区间合并)

    题意:       给你n商品,每个商品有自己的价值还有保质期,一天最多只能卖出去一个商品,问最大收益是多少? 思路:       比较好想的贪心,思路是这样,每一次我们肯定拿价值最大的,至于在那天拿 ...

  3. poj1456 结构体排序+贪心

    题意:给出很多商品,每个商品有价值和出售期限,只能在期限内出售才能获取利润,每一个单位时间只能出售一种商品,问最多能获得多少利润. 只需要按照优先价值大的,其次时间长的排序所有物品,然后贪心选择,从它 ...

  4. POJ1456 Supermarket 贪心

    贪心策略:一定先卖价值最大的,然后考虑卖当前的物品,卖的日期越靠后,越优,可以为以后的物品提供机会 #include <stdio.h> #include <string.h> ...

  5. poj1456 Supermarket 贪心+并查集

    题目链接:http://poj.org/problem?id=1456 题意:有n个物品(0 <= n <= 10000) ,每个物品有一个价格pi和一个保质期di (1 <= pi ...

  6. 【POJ1456】Supermarket(贪心)

    BUPT2017 wintertraining(16) #4 F POJ - 1456 题意 每个商品有过期日期和价格,每天可以卖一个商品,必须在过期前出售才能收益,求最大收益. 题解 贪心,按价格排 ...

  7. POJ-1456 Supermarket 销售商品【贪心】+【并查集】

    题目链接:http://poj.org/problem?id=1456 题目大意: 有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天 ...

  8. POJ-1456 Supermarket(贪心,并查集优化)

    Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10725 Accepted: 4688 Descript ...

  9. POJ1456:Supermarket(并查集+贪心)

    Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17634   Accepted: 7920 题目链接 ...

  10. POJ1456 Supermarket —— 贪心 + 路径压缩优化

    题目链接:http://poj.org/problem?id=1456 Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Subm ...

随机推荐

  1. script标签的type="test/html"时

    们可以在<script>片断中定义一个被JS调用的代码,但代码又不在页面上显示,这时,我们可以使用下面的方法: 1 <script id="commentTemplate& ...

  2. 现代编译原理--第二章(语法分析之LR(1))

    (转载请表明出处  http://www.cnblogs.com/BlackWalnut/p/4472772.html) 前面已经介绍过LL(1),以及如何使用LL(1)文法.但是LL(K)文法要求在 ...

  3. Ubuntu 网卡多个 IP 地址

    临时添加 IP 地址 首先,让我们找到网卡的 IP 地址.在我的 Ubuntu 15.10 服务器版中,我只使用了一个网卡. 运行下面的命令找到 IP 地址: 复制代码 代码如下: sudo ip a ...

  4. $.fn.extend 和$.extend函数

    区别和详解:jQuery extend()和jQuery.fn.extend()     首先是简单的概述区别:$.extend()是类方法   $.fn.extend()是原型方法   对象方法和原 ...

  5. 跳出思维定势,改变交谈习惯zz

    一直以来我都是一个不折不扣的作者所划分的内向者,羞于在公众场合说话,也不愿意与陌生人交谈,甚至是与认识的人聊天,有时候也是一种痛苦,看着在办公室里夸夸其谈的同事们,我总是感觉格格不入.严格说来,我算是 ...

  6. ajax序列化表单,再也不用通过data去一个个的传值了

    jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化 这样,我们就可以把序列化的值传给ajax()作为 ...

  7. 2018.07.08 hdu1394 Minimum Inversion Number(线段树)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...

  8. 第一个Django应用

    Django教程:http://www.liujiangblog.com/course/django/2 第一个Django应用 该应用包括以下两个部分: 一个可以让公众用户进行投票和查看投票结果的站 ...

  9. #ing#我的日常知识管理160421

    1. 知识来源:浏览是无时无刻的,知识爆炸的时代,信息在互联网上不再难以获得,却变得难以选择,取得有效的信息成了如今获取知识的重要环节…… 前端关注—— alloyteam.github.io  腾讯 ...

  10. (动态规划 最长有序子序列)Monkey and Banana --HDU --1069

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1069 http://acm.hust.edu.cn/vjudge/contest/view.action ...