• poj1456---贪心


    题目大意:

    有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
    ",ans);
        }
    
        return 0;
    }
    
  • 相关阅读:
    rsync+sersync实现文件同步
    HTTP 响应码
    ipv4和ipv6的区别
    查看linux系统版本信息
    MQ基础知识学习
    自动化测试的框架介绍和选择
    python(目录)
    分布式和集群
    raid 工作模式 raid0 raid1 raid10 raid5
    CentOS Docker安装
  • 原文地址:https://www.cnblogs.com/wt20/p/5798022.html
Copyright © 2020-2023  润新知