思路非常简单,就是一个二分法。
注意一下l和r的取值,就可以了。
- // 如何进行切分巧克力:横纵除法。例如:一块6*5的,欲切为3*3的小块,横:6/2 = 3;纵:5/3=1.所以可以切成3*1块。
-
- // 策略:二分法。l=1;r = 1e5;
-
-
- #include
- #include
- using namespace std;
- struct node
- {
- int x;
- int y;
- };
- vector
vNode; - int n,m;
-
- bool check(int mid)
- {
- int cnt = 0;
- for(int i = 0;i
- {
- int cntX = vNode[i].x / mid;
- int cntY = vNode[i].y / mid;
- cnt += cntX * cntY;
- }
- if(cnt>=m)
- return true;
- else
- return false;
- }
- int main()
- {
- cin>>n>>m;
- for(int i = 0;i
- {
- int a,b;
- cin>>a>>b;
- vNode.push_back({a,b});
- }
-
- int l = 1;
- int r = 1e5;
- while(l
- {
- int mid = (l + r + 1) / 2;
- if(check(mid))
- l = mid;
- else
- r = mid - 1;
- }
- cout<
- return 0;
- }
-
相关阅读:
分布式智能家居项目雏形
【Java面试】来讲一讲你对String的理解
C语言 | Leetcode C语言题解之第401题二进制手表
【数据结构】带头双向循环链表
Oracle-Autoupgrade方式升级19c
Python类和对象(在学过其他语言类和对象的基础上)
Kali系统MSF模块暴力破解MySQL弱口令漏洞
Centos7安装wps无法打开及字体缺失的问题解决
糖尿病患者,稳定控糖,饮食上需注意什么?禁忌和适宜一次说清
Promise错误处理比较:使用then的第二个参数还是catch
-
原文地址:https://blog.csdn.net/Software_Star/article/details/138170945