社区讨论

75帮孩子看看吧

P14115[IAMOI R4] 木桶效应参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhj3ovge
此快照首次捕获于
2025/11/03 20:12
4 个月前
此快照最后确认于
2025/11/03 20:12
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
//typedef long long ll;
const int N=1e5+10;
int n,m,k,h,a[N];
int l=1e9,r,mid;
bool check(int mid)
{
    int cnt1=0,cnth=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]<mid)
        {
            int sheng=mid-a[i];
            if(cnth+sheng/h<=k)
            {
                cnth+=sheng/h;
            }
            else
            {
                if(cnt1+((sheng/h*h)-(k-cnth)*h)<=m)
                    cnt1+=((sheng/h*h)-(k-cnth)*h),cnth=k;
                else
                    return 0;
            }
            if(cnt1+(sheng%h)>m)
            {
                if(cnth+1<=k)
                    cnth++;
                else
                    return 0;
            }
            else
            {
                cnt1+=sheng%h;
            }
        }
    }
    return 1;
}

signed main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>n>>m>>k>>h;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        l=min(l,a[i]);
    }
    r=3e18;
    while(l<r)
    {
        int mid=(l+r+1)/2;
        if(check(mid))
        {
            l=mid;
        }
        else
        {
            r=mid-1;
        }
    }
    cout<<l;
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...