zoukankan      html  css  js  c++  java
  • CF1042A 【Benches】(优先队列)

    这是一道良心的cf题

    题意里让你求的是来了m个人后人数最多的长椅上最少和最多有多少人

    如果要求最多,很好办,m个人都挤到原来人数最多的长椅上了(一眼看出)

    但如果要求最少呢?

    大家看图

    长椅某个时间的人数如图

    显然,如果你往最高峰上放(怕不是石乐志),一定会增加答案

    自然不是最优

    那我们怎么办呢?

    填坑就好了

    每次找见坑,把人填进去

    我们看mmm,只有10000,nnn只有100

    mlognlog_nlogn无压力

    所以我们可以开一个优先队列(小根堆)

    每次选最小的一个拿出来,加上一个人

    再放回去

    最后小根堆的最后一项就是答案

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #define rii register int i
    #define rij register int j
    using namespace std;
    int x[105],n,m,maxn;
    priority_queue<int>q;
    int main()
    {
        cin>>n;
        cin>>m;
        for(rii=1;i<=n;i++)
        {
            scanf("%d",&x[i]);
            q.push(-1*x[i]);
            maxn=max(maxn,x[i]);
        }
        maxn+=m;
        for(rii=1;i<=m;i++)
        {
            int ltt=q.top();
            q.pop();
            ltt--;
            q.push(ltt);
        }
        int kkk=0;
        for(rii=1;i<=n;i++)
        {
            kkk=min(kkk,q.top());
            q.pop();
        }
        kkk*=-1;
        cout<<kkk<<" "<<maxn;
    }
  • 相关阅读:
    postgresql-uuid重复问题
    postgresql-revoke 回收权限及删除角色
    postgresql
    postgresql -ALTER ROLE
    postgresql-行级安全-RLS
    postgresql 列级安全,列权限
    postgres 只读账号
    postgresql 对未来的表赋权限
    postgres权限管理
    特定元素个数的数组作为函数入参的两个方法
  • 原文地址:https://www.cnblogs.com/ztz11/p/9669936.html
Copyright © 2011-2022 走看看