首页 > 其他分享 >【二分】华华给月月准备礼物

【二分】华华给月月准备礼物

时间:2024-10-05 10:11:46浏览次数:1  
标签:二分 count 华华 int mid lengths length 木棍 礼物

https://ac.nowcoder.com/acm/contest/22353/F

注意点是count += length / mid,在题目中,count += length / mid 的含义是计算每根木棍可以被裁剪成多少段长度为 mid 的木棍。这里的整除是指 length / mid,它计算的是在给定的木棍长度 length 中,最多可以切出多少段长度为 mid 的完整木棍,不考虑剩余的部分。
所以不能if(a[i] < mid) count++;或者向上取整

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// 检查给定长度的木棍能否满足至少 K 根
bool check(const vector<int>& lengths, int mid, int K) {
    long long count = 0;
    for (int length : lengths) {
        count += length / mid;  // 计算每根木棍可以得到多少段
    }
    return count >= K;
}

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> lengths(N);

    for (int i = 0; i < N; ++i) {
        cin >> lengths[i];
    }

    // 二分查找最大可行长度
    int low = 1, high = *max_element(lengths.begin(), lengths.end());
    int ans = 0;

    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (check(lengths, mid, K)) {
            ans = mid;  // 记录可行的最大长度
            low = mid + 1;  // 尝试更大的长度
        } else {
            high = mid - 1;  // 缩小长度范围
        }
    }

    cout << ans << endl;
    return 0;
}

标签:二分,count,华华,int,mid,lengths,length,木棍,礼物
From: https://www.cnblogs.com/peterzh/p/18447653

相关文章

  • 【贪心】【二分】[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......
  • 二分图
    二分图定义:可以分为两个部分的图(称为左部和右部),同一个部分内没有边。由此得到:二分图是可以被二染色的图。若二分图\(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......