• poj1456 结构体排序+贪心


    题意:给出很多商品,每个商品有价值和出售期限,只能在期限内出售才能获取利润,每一个单位时间只能出售一种商品,问最多能获得多少利润。

    只需要按照优先价值大的,其次时间长的排序所有物品,然后贪心选择,从它可以选的时间开始往前遍历,如果某个时间点没有出售过商品,那就放在那个时间出售,就这样就行。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 struct work{
     7     int p,d;
     8     bool operator<(work a)const{
     9         if(p==a.p)return d>a.d;
    10         return p>a.p;
    11     }
    12 }w[10005];
    13 
    14 bool t[10005];
    15 
    16 int main(){
    17     int n;
    18     while(scanf("%d",&n)!=EOF){
    19         int i,j;
    20         memset(t,0,sizeof(t));
    21         for(i=1;i<=n;i++)scanf("%d%d",&w[i].p,&w[i].d);
    22         sort(w+1,w+n+1);
    23         int ans=0;
    24         for(i=1;i<=n;i++){
    25             for(j=w[i].d;j>=1;j--){
    26                 if(!t[j]){
    27                     ans+=w[i].p;
    28                     t[j]++;
    29                     break;
    30                 }
    31             }
    32         }
    33         printf("%d
    ",ans);
    34     }
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    AI---ListPicker的使用
    AI---Screen & Notifier
    Android---开发环境
    Android---App Inventor环境搭建
    OS---host文件
    JAVA---接口与抽象类
    JAVA---类成员的访问权限
    JSP---一个Servlet处理多个请求操作
    hdu 6016
    hdu 6019
  • 原文地址:https://www.cnblogs.com/cenariusxz/p/4790155.html
Copyright © 2020-2023  润新知