只有一个点没有过,思想是队列+贪心,看了半天也找不到bug,求助 dalao 帮忙~
#include<bits/stdc++.h>
using namespace std;
int n,h;
int f[30],d[30],t[30];
int check(int t,int x)
{
priority_queue<pair<int,int> > q;
int i;
pair<int,int> p;
int num=0;
for(i=1;i<=x;i++)
q.push(make_pair(f[i],i));
while(q.size()&&t--)
{
p=q.top(); q.pop();
if(p.first<=0) break;
num+=p.first;
q.push(make_pair(p.first-d[p.second],p.second));
}
return num;
}
int main()
{
int i;
int tmp=0,ans=0;
cin>>n>>h;
for(i=1;i<=n;i++)
scanf("%d",&f[i]);
for(i=1;i<=n;i++)
scanf("%d",&d[i]);
for(i=2;i<=n;i++)
scanf("%d",&t[i]);
h=h*60/5;
for(i=1;i<=n;i++)
{
tmp+=t[i];
ans=max(ans,check(h-tmp,i));
}
cout<<ans;
return 0;
}