当前位置: 首页 > article >正文

每日一题 二分查找分巧克力

先复习一下二分查找基本格式

check函数{


}
l=0;
r=10000;
while(l+1!=r){
if(check()条件){

l = mid;
else                    //这要看题目条件往哪里缩小范围
r = mid-1;

}

}

看下这道题

先找一下条件设置check函数,读题可以发现条件就是每个孩子都要分到一块巧克力,因为巧克力是正方形的,所以总数就是长和宽能获取的值相乘。分析到这已经差不多了,看看代码

#include <bits/stdc++.h>
using namespace std;
const int def=100005;
int h[def]={0};
int w[def]={0};
int n,k;

bool check(int mid){
  int sum=0;
  for(int i=0;i<n;i++){
    sum+=(h[i]/mid)*(w[i]/mid);
  }
  if(sum>=k)return true;
  else return false;
}
int main(){
  cin>>n>>k;
  for(int i=0;i<n;i++){
  cin>>h[i]>>w[i];
}
  int Max = 0;
  int l=1;
  int r=100000;
  while(l <=r){
    int mid = (l+r)/2;
    if(check(mid)){
      Max = mid;
      l = mid+1;
    }
    else r=mid-1;
  }
  cout<<Max;
return 0;
}


这道题我一开始想麻烦了,我以为要分类看它切后剩下的边能不能再组成巧克力。但是sum就是每边的数量相乘。


http://www.kler.cn/a/299987.html

相关文章:

  • Linux下 date时间应该与系统的 RTC(硬件时钟)同步
  • 分子动力学模拟里的术语:leap-frog蛙跳算法和‌Velocity-Verlet算法
  • 【QNX】QNX侧查看CPU的信息
  • 2025年最新深度学习环境搭建:Win11+ cuDNN + CUDA + Pytorch +深度学习环境配置保姆级教程
  • 快速学习GO语言总结
  • 一文了解如何在Qt中间集成Halcon窗口并在子线程显示(附工程源码下载链接)
  • 下班后做小红书第7个月,涨粉7w,累计变现5w+,我只用到五个点
  • 微前端 - 对外只开放一个端口
  • 23. C 语言,%d 和 %i的区别
  • Python 数据分析— Pandas 基本操作(下)
  • react js 笔记 3
  • 获取时间,并将时间按一定的格式输出
  • C++:sort自动排序函数
  • cell phone teardown 手机拆卸
  • nvm只有iojs列表解决办法
  • from T2I to T2V
  • 构建响应式 Web 应用:Vue.js 基础指南
  • Kubernetes资源管理常用的标签分类有哪些?
  • IT前端好用的工具集
  • 【科研小白系列】使用screen创建虚拟终端,实现本地关机后服务器仍然跑模型
  • Elasticsearch 使用误区之五——单次请求获取大量数据
  • 实时系统资源监测:AutoPowerOptionsOK确保电脑性能与节能兼备
  • SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能
  • Mysql 数据库免费使用
  • windows七个消息队列
  • 基于springboot的校园志愿者管理系统的设计与实现 (含源码+sql+视频导入教程+论文+PPT)