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

P8647 [蓝桥杯 2017 省 AB] 分巧克力

题目描述

在这里插入图片描述

思路

求最大边长,一开始我看这个题的第一眼,求最值?贪心?dfs?dp?但这些感觉都没有适用的
看了题解,才发现可以二分!二分的使用条件就是求某一范围的某个数,这个范围内的数要有单调性!这个题正好

代码

因为巧克力的大小是固定的,边长越大,则能分割出来的巧克力块越小,要求最大可能边长
求最大边长,即求小于等于,即求右边界,即mid = l + r + 1 >> 1;

#include<bits/stdc++.h>

using namespace std;

const int N = 1e5+10;
int h[N],w[N];

int n, k;
bool check(int x)
{
	int ans = 0;
	for(int i = 1; i <= n; i++)
	{
		ans +=h[i] / x *( w[i]/x);  //取个最小值,表示当前这块巧克力所能分的小朋友
	}
	if(ans >= k) //说明可以分
		return true;
	return false; //不可以分
}
int main()
{
	//分巧克力找的是小于等于的,因为左边的都满足,所以套右边界的板子
	
	cin >> n>>k;
	//最大的边长就是巧克力的最小边长
	int r = 0x3f3f3f3f;
	for(int i = 1; i <= n; i++)
	{
		cin >> h[i]>>w[i];
		r = min(min(h[i],w[i]) ,r);
	}
		puts("ok");	
	int l = 1;
	//这个数组是单调递增的,边长数
	//最大边长
	while(l < r)
	{
		int mid = l + r + 1 >>1;
		if(check(mid))
		{
			//当前的满足
			l = mid; //因为条件是有等于的
		}
		else
			r = mid - 1;
	}
	cout<<l <<endl;
	return 0;
}

总结

这个题启发我:
二分也可以用来求最值!但要满足单调性!

相关文章:

  • 智能配电保护:公共建筑安全的新 “防火墙”
  • 大模型评估框架-----OpenCompass模型评估简介
  • js触发隐式类型转换的场景
  • 5. 蓝桥公园
  • TCP/UDP的连接和数据发送过程详解
  • 【模拟电路】稳压二极管/齐纳二极管
  • SGLang实战:从KV缓存复用到底层优化,解锁大模型高效推理的全栈方案
  • vue实现在线进制转换
  • 自定义排序注意点
  • 解决:AttributeError: module ‘cv2‘ has no attribute ‘COLOR_BGR2RGB‘
  • 微信小程序中使用ECharts 并且动态设置数据
  • 如何使用AI辅助开发CSS3 - 通义灵码功能全解析
  • Html页面Table表格导出导入Excel文件 xlsx.full
  • 蓝桥杯单片机刷题——按键设置当前采集距离为距离参数
  • TDDMS分布式存储管理系列文章--分片/分区/分桶详解
  • Navicat Premium Lite 17官方正版免费数据库连接工具
  • [C语言笔记]10、字符串
  • 【Ragflow】15.Ragflow-Plus管理系统v0.1.2:小升级,修复一些已知问题
  • 2025年慕尼黑上海电子展前瞻
  • 【笔试强训day16】
  • 如何为自己的店铺做网站/企业网站seo贵不贵
  • 肇东市建设局网站/bt磁力兔子引擎
  • 深圳做网站乐云seo598/网络广告营销的特点
  • 精准软件/武汉seo优化分析
  • 学做网站论坛会员/制作网站模板
  • 做电子简历的网站/关键词seo服务