首页 > 其他分享 >【二分】【边界判定】

【二分】【边界判定】

时间:2024-10-05 14:44:32浏览次数:8  
标签:二分 边界 int ll joker 判定 low total goal

https://ac.nowcoder.com/acm/contest/22353/G
注意点:check中,不仅要判断用的joker数是否大于joker牌的数量,还要判断组成套数是否小于用的joker数量,

原文链接:https://blog.csdn.net/a_forever_dream/article/details/106548941

#include<bits/stdc++.h>

typedef long long ll;
using namespace std;

bool check(ll goal, ll* a, int n, int m) {
    ll joker_count = 0;
    for(int i = 0; i < n; i++) {
        if(a[i] < goal) {
            joker_count += goal - a[i];
        }
    }
    return joker_count <= m && joker_count <= goal; // 只需要判断 joker 数量是否超过了 m
}

int main() {
    int n, m;
    cin >> n >> m;
    ll a[50];
    ll total_cards = 0;  // 记录所有牌的总数
    
    // 读取每种牌的数量并计算总牌数
    for(int i = 0; i < n; i++) {
        cin >> a[i];
        total_cards += a[i];
    }
    
    ll low = 1; // low 最小从 1 开始
    ll high = total_cards + m; // high 设置为总牌数加上 Joker 数量
    
    ll ans = 0;
    while(low <= high) {
        ll mid = (low + high) / 2; // 中间值
        if(check(mid, a, n, m)) {
            ans = mid;  // 更新答案为 mid,因为 mid 满足条件
            low = mid + 1; // 继续尝试更大的值
        } else {
            high = mid - 1; // 尝试更小的值
        }
    }
    
    cout << ans << endl;
    return 0;
}

标签:二分,边界,int,ll,joker,判定,low,total,goal
From: https://www.cnblogs.com/peterzh/p/18447843

相关文章

  • [Python手撕]判断二分图
    classSolution:defisBipartite(self,graph:List[List[int]])->bool:defbfs(i):color[i]=1queue=[(i,1)]whilequeue:t,c=queue.pop(0)nc=0......
  • 【二分】华华给月月准备礼物
    https://ac.nowcoder.com/acm/contest/22353/F注意点是count+=length/mid,在题目中,count+=length/mid的含义是计算每根木棍可以被裁剪成多少段长度为mid的木棍。这里的整除是指length/mid,它计算的是在给定的木棍长度length中,最多可以切出多少段长度为mid的完整......
  • day9[探索 InternLM 模型能力边界]
    BadCase1:模型服务来源https://opencompass.org.cn/arena您的输入10月中旬去北京穿什么衣服模型Ainternlm2.5-20b-chat模型BDoubao-pro-32k/240828(字节豆包)模型A输出||模型B输出|||其他补充|xxxx|BadCase2:模型服务来......
  • 【贪心】【二分】[NOIP2015]跳石头
    https://ac.nowcoder.com/acm/contest/22353/C正确的思路是二分查找+贪心。具体来说,可以通过二分来猜测一个最小的跳跃距离,然后通过贪心算法判断是否可以通过移除石头使所有的跳跃都满足这个最小跳跃距离。这种方法的核心是逐步逼近最优解,而不是直接删除前m小的元素。细节:在......
  • 代码随想录算法训练营day7|704.二分查找、27.移除元素、977.有序数组的平方
    学习资料:https://programmercarl.com/数组理论基础.html理解:双指针可以同时获取一个数组的两个位置的值二分查找:根据区间范围(左闭右闭、左闭右开)来判断左右指针比较方式刷题记录:704.二分查找(左闭右闭则<=,左右指针,middle=left+(right-left)//2,因为考虑了等号情况所以下一步l......
  • Codeforces Round 973 (Div. 2) - D题二分
    首先这道题的一个坑点就是求max(a[1],a[2],...,a[n])和求min(a[1],a[2],...,a[n])是完全独立的,不会相互影响(可能是我读题能力太差,一直卡在这点了。。。)这道题二分是一种很好想的方法,题中提到max和min,我们就可以想到只要让最大值最小,让最小值最大就可以达到我的目的了,二分的......
  • 【有啥问啥】二分图(Bipartite Graph)算法原理详解
    二分图(BipartiteGraph)算法原理详解引言二分图(BipartiteGraph),又称二部图,是图论中的一个重要概念。在实际应用中,二分图模型经常用于解决如匹配问题、覆盖问题和独立集问题等。本文将详细解析二分图的基本概念、性质、判定方法,以及求解最大匹配问题的匈牙利算法,并探讨其在......
  • 11915 玩猫猫 二分答案
    解决思路 二分查找:使用二分查找来确定每个成员分到的猫猫数量的最大值。 检查函数:定义一个检查函数 check(mid),判断在每个成员最多分到 mid 只猫猫的情况下,是否可以将所有猫猫分完  更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最小的不满度。 #......
  • 2520 牛的舞蹈表演 二分答案 优先队列
    解决思路 二分查找:使用二分查找来确定舞台的最小大小 K。 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。 更新边界:......
  • 11617 查找首次出现的位置 二分
    解决思路 读取输入:读取数组和查询数。 二分查找:对每个查询数进行二分查找,找到其在数组中第一次出现的位置。 输出结果:输出每个查询数在数组中第一次出现的位置。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+10;int......