英语不好就是坑啊。这道题把我坑残了啊。5次WA一次被HACK。第二题得分就比第一题高10分啊。
以后一定要加强英语的学习,要不然就跪了。
题意:有一个果园里有非常多树,上面有非常多果实,为了不然成熟的果实腐烂,必须在两天之内收集起来。给出果园有的树,以及该树上的果实个数,工人每天能够採集的上限,求出这段时间之后,能收集到的最大值。
想法非常easy。优先採集上一天剩下的果实(假设有剩下)。假设还能採集再採集今天成熟的果实。假设採集不玩就把当前天数的果实移动到下一天去优先採集。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n,v;
int i;
int ans=0;
int cnt;
int c;
int a[5000],b,d;
memset(a,0,sizeof(a));
scanf("%d %d",&n,&v);
for(i=1;i<=n;i++)
{
scanf("%d %d",&b,&d);
a[b]+=d;
}
cnt=0;
for(i=0;i<=3001;i++)
{
c=v;
if(cnt<=c)
{
c-=cnt;
ans+=cnt;
}
else
{
ans+=c;
c=0;
}
if(c>=a[i])
{
ans+=a[i];
cnt=0;
}
else
{
cnt=a[i]-c;
ans+=c;
}
}
printf("%d\n",ans);
return 0;
}