20分求调
  • 板块P1717 钓鱼
  • 楼主hansen121
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/16 11:38
  • 上次更新2024/7/16 13:26:58
查看原帖
20分求调
777911
hansen121楼主2024/7/16 11:38
#include <bits/stdc++.h>
using namespace std;
int f[1000001];
int d[1000001];
int t[1000001];
int a[1000001],maxx=-1;
struct node
{
    int f,d;
    bool operator<(const node& a) const
    {
        return f<a.f;
    }
};
priority_queue <node> q;
int main()
{
	int n,h;
	cin>>n>>h;
	h*=60;
	for(int i=1;i<=n;i++)
	{
		cin>>f[i];
		q.push((node){f[i],i});
	}
	for(int i=1;i<=n;i++)
	{
		cin>>d[i];
	}
	for(int i=1;i<n;i++)
	{
		cin>>t[i];
	}
	for(int i=1;i<=n;i++)
	{
		while(!q.empty())
		{
			q.pop();
		}
		int sum=0;
		int t1=h;
		for(int j=1;j<i;j++)
			t1-=t[j]*5;
		for(int j=1;j<=i;j++)
			q.push((node){f[i],d[i]});
		while(t1>0&&q.top().f>0)
		{
			node m=q.top();
			sum+=m.f;
			q.pop();
			m.f-=m.d;
			q.push(m);
			t1-=5;
		}
		maxx=max(maxx,sum);
	}
	cout<<maxx;
} 
2024/7/16 11:38
加载中...