程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces(441B) Round #252 (Div. 2)

Codeforces(441B) Round #252 (Div. 2)

編輯:C++入門知識

 

題目大意:有一個果園裡有很多樹,上面有很多果實,為了不然成熟的果實腐爛,必須在兩天之內收集起來。給出果園有的樹,以及該樹上的果實個數,工人每天可以采集的上限,求出這段時間之後,能收集到的最大值

很簡單,維護一個一維數組ans[],首先將數據存在結構體中,再按果實成熟的日期ai升序排序,優先將果實計入ans[ai]中,多的放入ans[ai+1]裡面,如果大於上限,則記為上限大小,最後這個數組全部元素的和就是答案了。

 

#include 
#include 
#include 
#define MAX_N 3000
using namespace std;
struct fruit
{
    int x,y;
};
bool cmp(fruit a,fruit b)
{
    return a.xv)
                ans[a[i].x]=v;
            else
                ans[a[i].x]+=ans[a[i].x-1]+a[i].y-v;
            ans[a[i].x-1]=v;
        }
    }
    int Mans=0;
    for(int i=0;i<=maxi;i++)
        Mans+=ans[i];
    printf(%d
,Mans);
    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved