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

P1843 奶牛晒衣服

题目背景

熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 。但是由于衣服很湿,为牛宝宝晒衣服就成了很不爽的事情。于是,熊大妈请你(奶牛)帮助她完成这个重任。

题目描述

一件衣服在自然条件下用一秒的时间可以晒干 a 点湿度。抠门的熊大妈只买了一台烘衣机 。使用用一秒烘衣机可以让一件衣服额外烘干 b 点湿度(一秒晒干 a+b 湿度),但在同一时间内只能烘一件衣服。现在有 n 件衣服,第 i 衣服的湿度为 wi​(保证互不相同),要你求出弄干所有衣服的最少时间(湿度为 0 为干 )。

输入格式

第一行三个整数,分别为 n,a,b。
接下来 2 到n+1 行,第 i 行输入 wi​。

输出格式

一行,弄干所有衣服的最少时间。

输入输出样例

输入 #1复制

3 2 1
1
2
3

输出 #1复制

1

说明/提示

样例解释

让机器烘第三件衣服即可一秒完成。

解析:

我们贪心,每次烘干其时间最长的衣服。这时就需要维护大根堆,每次烘干,去最大值-b;

#include<bits/stdc++.h>
using namespace std;
struct node{int a;bool operator <(const node &b) const{return a < b.a;}
};
int main(){int n,a,b;cin >> n >> a>>b;priority_queue<node> pq;for(int i = 1;i <= n;i++){int x;cin >> x;pq.push({x});}int time = 0;int mx = pq.top().a;while(mx > time*a){//我们每次取最大的进行烘干 time++;mx -= b;pq.pop();pq.push({mx});mx = pq.top().a;} cout << time;return 0;
} 

时间复杂度为:O(logn * time)

二分法:

猜时间,对时间进行验证;

// 二分答案 nlogn
#include<iostream>
using namespace std;int n,a,b,w[500005];bool check(int t){int s=0;for(int i=1;i<=n;i++){if(w[i]<=t*a) continue;s+=(w[i]-t*a+b-1)/b; //上取整}return s<=t;
}
int main(){ios::sync_with_stdio(0);cin>>n>>a>>b;for(int i=1;i<=n;i++) cin>>w[i];int l=0,r=1e6,mid;while(l+1<r){mid=l+r>>1;check(mid)?r=mid:l=mid;}cout<<r<<endl;
}

http://www.lryc.cn/news/336597.html

相关文章:

  • 功能强大:JMeter 常用插件全解析
  • vulhub之fastjson篇-1.2.27-rce
  • 基于springboot实现教师工作量管理系统项目【项目源码+论文说明】计算机毕业设计
  • [StartingPoint][Tier1]Crocodile
  • 【Qt】:常用控件(四:显示类控件)
  • gradio简单搭建——关键词简单筛选【2024-4-11优化】
  • docker完美安装分布式任务调度平台XXL-JOB
  • java使用while循环输出2-100的所有素数
  • VSCode中调试C++程序
  • Can Transformer and GNN Help Each Other?
  • 在隐私计算应用中和数链具备哪些技术特点?
  • 【智能家居入门4】(FreeRTOS、MQTT服务器、MQTT协议、微信小程序)
  • 爬取豆瓣(线程、Session)优化版本
  • 拷贝控制总结
  • 无重复字符串的最长子串
  • javaScript Object.hasOwn()的用法
  • MINI2440 开发板 给他干出来了
  • 上海人工智能实验室的书生·浦语大模型学习笔记(第二期第三课——上篇)
  • 前端小白的学习之路(Vue2 三)
  • ChatGPT 之优势与缺陷
  • python爬虫———post请求方式(第十四天)
  • 51蓝桥杯之DS18B20
  • TiDB 组件 GC 原理及常见问题
  • 【c++】STl-list使用list模拟实现
  • 号卡极团分销管理系统 index.php SQL注入漏洞复现
  • 内核驱动更新
  • 故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab)
  • 我为什么选择成为程序员?
  • Open CASCADE学习|统计形状拓扑数量
  • LeetCode 热题 100 题解(二):双指针部分(2)| 滑动窗口部分(1)