首页 > 其他分享 >11915 玩猫猫 二分答案

11915 玩猫猫 二分答案

时间:2024-09-30 17:13:14浏览次数:7  
标签:二分 猫猫 ll mid int 查找 11915

解决思路

 
  • 二分查找:使用二分查找来确定每个成员分到的猫猫数量的最大值。
 
  • 检查函数:定义一个检查函数 check(mid),判断在每个成员最多分到 mid 只猫猫的情况下,是否可以将所有猫猫分完

 

  •  更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最小的不满度。
 
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 10;
ll n, m, a[N];

// 检查在每个成员最多分到 mid 只猫猫的情况下,是否可以将所有猫猫分完
bool check(ll mid) {
    ll sum = 0;
    for (int i = 1; i <= m; i++) {
        sum += (a[i] + mid - 1) / mid; // 计算每种花色需要的成员数
    }
    return sum <= n; // 判断是否可以在 n 个成员内分完
}

int main() {
    // 读取成员数和猫猫的花色种数
    cin >> n >> m;
    ll L = 1, R = 0;
    
    // 读取每种花色的猫猫数量,并找到最大值
    for (int i = 1; i <= m; i++) {
        cin >> a[i];
        R = max(R, a[i]);
    }
    
    ll ans = R;
    
    // 二分查找确定最小的不满度
    while (L <= R) {
        ll mid = (L + R) / 2;
        if (check(mid)) {
            ans = mid; // 更新答案
            R = mid - 1; // 尝试更小的最大值
        } else {
            L = mid + 1; // 尝试更大的最大值
        }
    }
    
    // 输出最小的不满度
    cout << ans;
    return 0;
}

 

标签:二分,猫猫,ll,mid,int,查找,11915
From: https://www.cnblogs.com/jyssh/p/18442196

相关文章

  • 2520 牛的舞蹈表演 二分答案 优先队列
    解决思路 二分查找:使用二分查找来确定舞台的最小大小 K。 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。 更新边界:......
  • 11617 查找首次出现的位置 二分
    解决思路 读取输入:读取数组和查询数。 二分查找:对每个查询数进行二分查找,找到其在数组中第一次出现的位置。 输出结果:输出每个查询数在数组中第一次出现的位置。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+10;int......
  • 二分图
    二分图定义:可以分为两个部分的图(称为左部和右部),同一个部分内没有边。由此得到:二分图是可以被二染色的图。若二分图\(G=(V,E)\)包含\(C\)个连通分量,则其二染色的方案为\(2^C\)。二分图的判定定理:一张无向图是二分图,当且仅当图中无奇环。推论:二分图的任意子图为......
  • [USACO03Open] Lost Cows(二分加树状数组)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • rust二分搜索
    如果要二分搜索某个特定值,可以用binary_search:https://doc.rust-lang.org/stable/std/primitive.slice.html#method.binary_search如果要实现C++里的lower_bound和upper_bound类似的功能,可以用partition_point:https://doc.rust-lang.org/stable/std/primitive.slice.html#meth......
  • 使用二分法爆破数据库名
    这一篇是基于dvwa下的SQL盲注(SDLInjection(Blind),在已知数据库存在和SDL盲注可行的前提下进行更深一步的操作。这里,我们将会通过python来爆破数据库名。1.python连接数据库。(1)首先我们需要查看自己的python是否已经已经安装了pymysql库,如果没有安装,可以通过Win+R打开命令行......
  • 二分图
    定义两个点集,点集内部没有连边的图称为二分图。二分图最大匹配选中最多的边,满足每个点只被选到一次,即最大边匹配点。考虑网络流建模。每个点只能用一次,\(S\)向左边的点连一条流量为\(1\)的边,右边的点向\(T\)连一条流量为\(1\)的边,就可以保证这个要求。然后两个点集之间......
  • 二分图最大匹配/二分图最大权匹配
    二分图最大匹配匈牙利算法思路算法核心:找“增广路”遍历所有左侧点,每次进行一下流程:尝试去寻找一个右侧点来匹配;若该右侧点还没有匹配的左侧点,则找到了,回溯。否则进入改右侧点的匹配左侧点,回到1。代码constintN=505;intn,m,tag;vector<int>g[N];intmatch[N]......
  • CF1592F2-Alice and Recoloring 2-分析、二分图
    link:https://codeforces.com/contest/1592/problem/F2题意:给定一个\(n\)行\(m\)列的目标矩阵,矩阵元素只有W或B,并且你有一个初始矩阵,元素全为W。现在你可以矩阵实施以下操作:使用一块钱,选定一个包含\((1,1)\)的子矩阵,把矩阵中的元素全部反转(W变B,B变W)。使用......
  • codeforces round 971(div4)E(二分答案,禁用数学方法)
    解题历程:开始想的是用数学公式的方法,利用公式推出二次函数,再求出根,再用根求出答案,检查了一个小时,结果怎么改都有细微的偏差,最后发现答案先单调递减在单调递增,那么可以用二分答案的方法查找最小的答案,二分对细节的处理要求比较高,于是在二分中加入了一个限制,当二分的区间小于5时,就......