寒假思雨姐摸底G题,题解

来源:互联网 发布:淘宝运营一个月多少钱 编辑:程序博客网 时间:2024/06/05 07:49

给出多种水果,给出他的价值和截止日期,问最大获利。

用一个b的数组记录,将每种水果根据价值从大到小排序,从截止日期开始以此向前找,将利润放在b数组保存,然后将b数组的值累加就可以了。

#include <stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{    int px,pd;};bool cmp(node a,node b){    return a.px>b.px;}int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        if(n==0) {printf("0\n");continue;}        struct node a[10001];        int i;        for(i=0;i<n;i++)        {            scanf("%d%d",&a[i].px,&a[i].pd);        }        int sum=0;        int b[10001]={0};       sort(a,a+n,cmp);        for(i=0;i<n;i++)        {           int t=a[i].pd;           while(t--)           {               if(b[t]<a[i].px) {b[t]=a[i].px;break;}           }        }        for(i=0;i<10001;i++)           {             sum+=b[i];           }        printf("%d\n",sum);    }    return 0;}/*4  50 2  10 1   20 2   30 17  20 1   2 1   10 3  100 2   8 2   5 20  50 10*/


0 0
原创粉丝点击