[CQOI2010]扑克牌

[CQOI2010]扑克牌

https://ac.nowcoder.com/acm/problem/19916

题意:有n种牌,每种牌有ci张,还有m张万能的joker牌,每一套牌可以用一张joker牌代替任意一张牌,求最多能组成多少套牌?

思路:二分求最大值,因为能组成k套牌则必能组成(k-1)套牌。是否能组成k套牌,首先我们最多用min(m,k)张万能牌,用万能牌补数目少于k的牌,最后看万能牌是否够用。

代码:

#include<bits/stdc++.h>
#define ll long long
#define inf 100000000

using namespace std;

int n, m, c[1005];

bool fun(int k)
{
    ll p=min(m,k);
    for(int i=0;i<n;i++)
    {
        if(c[i]<k)
        {
            p=p-(k-c[i]);
        }
    }
    if(p<0)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

int erfen(int l,int r)
{
    while(r-l>1)
    {
        int z=(r+l)/2;
        if(fun(z))
        {
            l=z;
        }
        else
        {
            r=z;
        }
    }
    return l;
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&c[i]);
    }
    int z=erfen(0,1000000007);
    cout << z << endl;
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务