牛客编程巅峰赛S1第3场 - 青铜&白银 C.牛牛晾衣服(二分)
2024-09-08 06:03:01
题意:有\(n\)件衣服,每件衣服都有\(a_{i}\)滴水,所有衣服每分钟都能自然烘干\(1\)滴水,或者用烘干机,每分钟可以烘干\(k\)滴水,问最快多少分钟可以使所有衣服都烘干.
题解:这题和之前的那个拔苗助长感觉一样啊....都是二分答案.
先把\(a\)排个序,然后左区间\(l=1\),右区间\(r=a[n-1]\),因为答案肯定是单调的,大的满足,小的一定也满足,所以每次满足情况时更新右区间,具体的,每件衣服都能自然烘干\(mid\)滴水,然后枚举所有衣服,若不能自然烘干\((a_{i}-mid>0)\),那么就要用烘干机,如果使用烘干机的时间大于\(mid\),那么肯定不满足情况.
代码:
class Solution {
public:
/**
* 计算最少要多少时间可以把所有的衣服全烘干
* @param n int整型 n件衣服
* @param a int整型vector n件衣服所含水量数组
* @param k int整型 烘干机1分钟可以烘干的水量
* @return int整型
*/
int solve(int n, vector<int>& a, int k) {
// write code here
sort(a.begin(),a.end());
int l=1,r=a[n-1];
while(l<r){ //向左二分
int mid=(l+r)>>1;
int tmp=mid;
for(int i=0;i<n;++i){
if(a[i]-mid>0){
tmp-=(a[i]-mid-1)/(k-1)+1; //上取整
}
if(tmp<0) break; //优化
}
if(tmp>=0){
r=mid; //更新右区间
}
else{
l=mid+1;
}
}
return r;
}
};
最新文章
- 安装vsphere5.1
- Appium客户端
- .NET指定程序集的位置
- MySQL体系结构以及各种文件类型学习
- 【Android UI设计与开发】6.底部菜单栏(三)使用Fragment+PopupWindow仿QQ空间最新版底部菜单栏
- Typescript的面向对象
- BestCoder Round #76 解题报告
- CentOS 6.4搭建zabbix
- 第一次用IIS发布网站时遇到的两个问题
- shell脚本练习(随机取名)
- Linq skip skipwhile take takewhile
- HDU 5455 Fang Fang 水题,但题意描述有问题
- 29. leetcode 167. Two Sum II - Input array is sorted
- 接口测试 mock server 工具moco学习笔记
- leetcode 704. Binary Search 、35. Search Insert Position 、278. First Bad Version
- Hide-Music-Player 一个完整的音乐播放器《IT蓝豹》
- dotTrace 每行执行时间和执行次数
- nginx配置,php安装
- 实施CMMI3的体会
- c# 计算两个时间的时间差
热门文章
- python列表字符串集合常用方法
- 【Linux】make编译的小技巧
- 【MySQL】centos6中/etc/init.d/下没有mysqld启动文件,怎么办
- 映泰主板H100系列安装win7的各种坑
- 跨平台导PDF,结合wkhtmltopdf很顺手
- EL&;Filter&;Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
- 【IDEA】Lombok--是否值得我们去使用
- Ajax编程基础
- Flutter--Flutter开发环境搭建
- Salt (cryptography)