QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#687411 | #9529. Farm Management | ref | RE | 0ms | 0kb | C++20 | 2.0kb | 2024-10-29 18:53:05 | 2024-10-29 18:53:06 |
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=1e5+10;
const int M=1e6+10;
struct node
{
ll w,l,r;
}a[100010];
bool cmp(node b,node c)
{
if(b.w<c.w)
{
return 1;
}
else if(b.w==c.w)
{
if(b.l<c.l)
{
return 1;
}
else if(b.l==c.l)
{
if(b.r<c.r)
{
return 1;
}
else
{
return 0;
}
}
else
return 0;
}
else
return 0;
}
ll dp[M];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n,m;
while(cin>>n>>m)
{
ll ans=0;
ll cnt=0;
ll maxx=0;
for(int i=1;i<=n;i++)
{
cin>>a[i].w>>a[i].l>>a[i].r;
ans+=(a[i].w*a[i].l);
cnt+=a[i].l;
}
sort(a+1,a+n+1,cmp);
maxx=ans+(m-cnt)*a[n].w;
int st=n;
int sum=0;
dp[0]=0;
for(int i=n;i>=1;i++)
{
if(cnt+a[i].r-a[i].l<m)
{
ans=ans+(a[i].w)*(a[i].r-a[i].l);
}
else
{
ans=ans+(a[i].w)*(m-cnt);
st=i;
sum=m-cnt;
break;
}
}
int j=st;
for(int i=1;i<=(int)1e6;i++)
{
while(a[st].l+sum==a[st].r)
{
st--;
sum=0;
if(st==0)
{
break;
}
}
if(st==0)
{
break;
}
sum++;
dp[i]=dp[i-1]+a[st].w;
}
for(int i=1;i<=j;i++)
{
maxx=max(maxx,ans-a[i].w*a[i].l+dp[a[i].l]);
}
cout<<maxx<<endl;
}
}
详细
Test #1:
score: 0
Runtime Error
input:
5 17 2 3 4 6 1 5 8 2 4 4 3 3 7 5 5