首页 > 其他分享 >第八届蓝桥杯省赛 分巧克力(二分)

第八届蓝桥杯省赛 分巧克力(二分)

时间:2024-03-14 22:58:24浏览次数:34  
标签:二分 return int LL mid long 蓝桥 省赛 check

题目描述: 

 


思路:

给出N个长方形的长和宽,可以分别看长能被分成多少块,宽能被分为多少块,

也就是 (h/mid) * (w/mid),使其大于等于K

所以我们可以通过二分去找,最大的边长是多少


AC代码: 

#include<iostream>

using namespace std;

typedef long long LL;
const int N = 100010;
int n,m;
int h[N],w[N]; //巧克力长宽

bool check(int mid)
{
    LL res = 0;
    for(int i=0;i<n;i++)
    {
        //算一下巧克力长和宽分别能被切割多少块
        res += (LL)((h[i]/mid) * (w[i]/mid));
        if(res >= m) return true;
    }
    return false;
}

int main()
{
    scanf("%d%d", &n, &m);
    for(int i=0;i<n;i++) scanf("%d %d",&h[i],&w[i]);
    //巧克力的能被切割区间(边长)
    int l = 1,r = 1e5;
    //因为题目中有最大,所以用右模板
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(check(mid)) l = mid;
        else r = mid - 1;
    }
    printf("%d",r);
    return 0;
}

标签:二分,return,int,LL,mid,long,蓝桥,省赛,check
From: https://blog.csdn.net/m0_67717626/article/details/136715874

相关文章

  • 蓝桥杯 3.14 三国问题
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+100;inta1[N],b1[N],c1[N],w[N];longlongn,m;longlongs;intsheng(inta[],intb[],intc[]){memset(w,0,sizeof(w));//数组初始化为0,只有在定义时才可以用{0}//cout<<'$';for(int......
  • 14届蓝桥杯省赛E题——颜色平衡树
    一、题目描述二、题目分析设颜色平衡树的节点有n个,颜色种类为p种,每种颜色的出现次数均为q,则n=p*q。换句话说,如果一棵树的出现次数最多的颜色们的出现次数之和等于该树的节点个数,那么这棵树是颜色平衡树。为了降低遍历次数,采用树上启发式合并,定义树中节点最多的子树为重子树......
  • (C++)二分
    二分​ 二分,他可以应用的范围特别广,即使是你想不到的地方他也可以二分。​ 例如:Acwing790数的三次方根这题可以直接二分题目所要求的答案,通过不断逼近三次方后的结果来二分;Acwing5407.管道,这题里可以直接二分时间,然后合并区间查看是否满足;Acwing730.机器人跳跃问题可以......
  • P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值
    题目描述给定一棵包含N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是​,如下图所示: 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1......
  • 备战蓝桥杯Day27 - 省赛真题-2023
    题目描述大佬代码importosimportsysdeffind(n):k=0fornuminrange(12345678,98765433):str1=["2","0","2","3"]forxinstr(num):ifxinstr1:ifstr1[0]==x......
  • C++ | 蓝桥题库区间或(位运算)
    一开始看题解很晕,这里采用前缀和方式的思想是:按位贡献,将答案分成32份(1e9最多32位二进制数)这样才有的prefix[32][N]前缀和数组,求的是第i位数第w位上的和。(1<<w)1左移w位相当于2的w次方,prefix[w][r]-prefix[w][l-1]相当于[l,r]这段距离上有1就让ans加上1,没有就不加。#inc......
  • 【二分法】分巧克力问题/python
    1.看出是用二分法:最大值最小化,最小值最大化,满足条件的最值,用二分法做。2.确定low,high,确定check的条件3.注意: 是当low<high的时候进行循环,当相等或大于的时候输出,while的条件不能写错。 本题是在区间里面找满足条件的最大值,所以,在算mid的时候面对取整的问题让它向大......
  • 蓝桥练习题-K倍区间
    16.k倍区间-蓝桥云课(lanqiao.cn)首先,看到这个题,想到暴力求解,但显然,数据过大,暴力法过不了;然后看到了一个办法:对所有元素的前缀和取K的模,若s[i],s[j]相同,则在j-1到i的区间内,区间和为K的倍数。C++代码:#include<iostream>#include<queue>usingnamespacestd;ty......
  • 蓝桥练习题-分考场
    0分考场-蓝桥云课(lanqiao.cn)思路:暴力dfs,dfs(x,room)x为待放入教室的人,room为当前最大有几号教室,对x依次遍历教室1到教室room,若某教室当前没该同学认识的人,直接放入,接着放下一个人,若room个教室里都存在x认识的人,即x不能放入任何教室,则在开辟一块新教室放入该同学,dfs结束......
  • 【算法】二分查找——BinarySearch
    一、概述二分查找又称折半查找,是一种能够大幅减少时间复杂度的查找方法,但是二分查找要求线性表必须词用顺序储存结构,而且表中元素按关键字有序排列。在后续讨论中,我们假设有序表递增有序。二分查找中使用的术语:目标Target——你要查找的值索引Index——你要查找的当前......