题意
有m棵果树,每颗在Ti时间成熟,有Ai个水果,只能在Ti和Ti+1两天采摘。每天最多采V个,问最后最多能采多少水果。
题解
看数据规模只要贪心暴力一下就好了。。。
每天优先采前一天的水果。。。保证最大限度使用V。。。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>
#include <map>
#include <set>
using namespace std;
int v[3010];
int main()
{
//freopen("input","r",stdin);
//freopen("output","w",stdout);
memset(v,0,sizeof(v));
int m,V;
cin>>m>>V;
for (int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
v[a]+=b;
}
int ans=0;
for (int i=1;i<=3001;i++)
{
int t;
if (v[i-1]>=V){
ans+=V;
v[i-1]-=V;
t=0;
}
else
{
t=V-v[i-1];
ans+=v[i-1];
}
if (v[i]>t){
ans+=t;
v[i]-=t;
}
else
{
ans+=v[i];
v[i]=0;
}
}
cout<<ans<<endl;
return 0;
}