博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CareerCup Divide n cakes to k different people
阅读量:4184 次
发布时间:2019-05-26

本文共 1220 字,大约阅读时间需要 4 分钟。

In a party there are n different-flavored cakes of volume V1, V2, V3 ... Vn each. Need to divide them into K people present in the 

party such that 
- Each member of party gets equal volume of cake (say V, which is the solution we are looking for) 
- A given member should get a cake of single flavour only i.e. You cannot distribute parts of different flavored cakes to same 
member. 
- Minimum volume of cake gets wasted after distribution so that means a maximum distribution policy

-------------------------------------------------------------------------------------

Binary Search: We assume the volumes are int. If not, we should define an epi.

class Solution { public:  bool isDivided(vector
& vi, int K, int v) { } int getVol(vector
& vi, int K) { int sum = 0, l = 0, r = 0, maxVol = 0, mid; sort(vi.begin(),vi.end(),greater
); for (int i = 0; i < vi.size(); ++i) sum += vi[i]; l = vi[0] / K; r = sum / K; while (l <= r) { mid = (l + r) / 2; if (isDivided(vi, K, mid)) { if (mid > maxVol) { maxVol = mid; l = mid + 1; } else r = mid - 1; } else r = mid - 1; } return maxVol; }}

转载地址:http://dwboi.baihongyu.com/

你可能感兴趣的文章
Spring MVC 和 Servlet 一样,都不是线程安全的
查看>>
Java线程:线程的同步与锁
查看>>
Mac、Windows可以互相远程
查看>>
oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
oracle 插入数据时提示没有足够的值
查看>>
Oracle Net Manager的使用及配置
查看>>
镜像文件
查看>>
苹果笔记本桌面下面的工具栏没了怎么调出来
查看>>
CSS原理与CSS经验分享
查看>>
oracle中int与number的区别
查看>>
php不用jsonp也能跨域
查看>>
solr作为一种开源的搜索服务器
查看>>
Pig分析数据过程
查看>>
linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
查看>>
pentaho套件
查看>>
软件产品经理职责
查看>>
Linux下Tomcat的安装配置
查看>>
UI即User Interface
查看>>
大数据要学习知识
查看>>
Elasticsearch Java API总汇
查看>>