奶牛晒衣服 (dry)

Problem:       dry.pas/c/cpp
Input:       dry.in
Output:         dry.out
Memory Limit:   128 MB
Time Limit:      1 sec

【问题描述】

在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝。熊大妈决定给每个宝宝都穿上可爱的婴儿装。于是,为牛宝宝洗晒衣服就成了很不爽的事情。

圣人王担负起了这个重任。洗完衣服后,你就要弄干衣服。衣服在自然条件下用1的时间可以晒干A点湿度。抠门的熊大妈买了1台烘衣机。使用烘衣机可以让你用1的时间使1件衣服除开自然晒干的A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用。

N件的衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服的最少时间(湿度为0为干)。

【输入】

第一行N,A,B;接下来N行,每行一个数,表示衣服的湿度(1≤湿度,A,B≤500000,1≤N≤500000)。

【输出】

一行,最少时间。

【样例】

dry.in

3 2 1

1 2 3

dry.out

1

【样例解析】

第1个时间内,用机器处理第3件衣服,此外,所有衣服自然晒干2。花费1时间全部弄干。

首先看这道题的意思,我们可以很容易的得出每次选湿度最大的衣服去烘干更优,那么我们就可以用贪心的方法来做

我一开始是维护了两个优先队列(也就是堆,Pascal可以手动维护)q1和q2,比如样例我们都插入q1中,那么q1就为3 2 1,然后依次取出,第一个 -a-b ,其他的 -a,插入q2,这时q2就为0 0 -1,这是就满足题目要求,就把次数输出。(至于满足题目要求的判断可以用一个计数器,每次遇到一个新的<=0的就+1)
不过就这样交了上去,结果只过了4组。。。。。

后来分析,这种其实已经接近O(N2)了,所以还需要优化!

我们发现,每次 -a-b 的就只有第一个最大的数,而其他的都减了一个 a 。所以换句话说就是所有都减 a ,而第一个多减一个 b 。那么与其每个去减 a ,那还不如我们用一个变量sum每次 +a ,这样每次就只需要让堆的跟(也就是最大的那个) -b 就ok了,最后只需要比较最大的那个是否 <=sum ,如果成立,就表示全部都<=sum 了。这就大大提高了效率!

C++ Code

/*
C++ Code
http://oijzh.cnblogs.com
By jiangzh
*/
#include<cstdio>
#include<queue>
using namespace std;
#define MAXN 500010int n,a,b,wet[MAXN];
priority_queue<int> q;
int num=0,ans=0;void init()
{freopen("dry.in","r",stdin);freopen("dry.out","w",stdout);scanf("%d%d%d",&n,&a,&b);for(int i=1;i<=n;i++) {scanf("%d",&wet[i]);q.push(wet[i]);}
}void work()
{int sum=0;while(1){if(sum>=q.top()) {printf("%d",ans);return;}sum+=a;int x=q.top();q.pop();x-=b;q.push(x);ans++;}
}int main()
{init();work();return 0;
}

  

转载于:https://www.cnblogs.com/oijzh/archive/2012/11/05/2754976.html

【贪心+堆优化】奶牛晒衣服 dry.pas/c/cpp相关推荐

  1. NOIP2012模拟试题【奶牛晒衣服】

    1.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任 ...

  2. 【贪心】奶牛晒衣服(ybtoj 贪心-1-1)

    奶牛晒衣服 ybtoj 贪心-1-1 题目大意 有n件衣服,每件衣服有一个湿度,每一个单位时间所有衣服会湿度-a,同时可以选择一件衣服使其湿度-b,问最短在多久可以使所有衣服湿度小于等于0 输入样例 ...

  3. P1843 奶牛晒衣服(贪心)

    P1843 奶牛晒衣服 直接贪心- #include<iostream> #include<stdio.h> #include<string.h> #include ...

  4. CCF NOI1134 奶牛晒衣服

    问题链接:CCF NOI1134 奶牛晒衣服. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上 ...

  5. luogu P1843 奶牛晒衣服 | 二分法

    时间复杂度O(logn) P1843 奶牛晒衣服 P2678 跳石头 P1577 切绳子 当函数具有单调性时 在范围内 二分答案的一边可以而另一边不可以 通过二分把范围逐渐缩小 1.当了l<=r ...

  6. 奶牛晒衣服(二分查找)

    奶牛晒衣服 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情.熊大妈请你帮助完成这个重任,洗完衣服后,你就要弄干衣服.衣服在自然条件下用 111 的时间可以晒干 AA ...

  7. 奶牛专题2:奶牛晒衣服

    [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任.洗完衣服后,你就要弄干衣 ...

  8. 洛谷 P1843 奶牛晒衣服

    题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...

  9. July 16th 模拟赛C T2 奶牛晒衣服 Solution

    空降题目处 点我点我点我 Description: 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负 ...

  10. F - 奶牛晒衣服(二分)

    熊大妈决定给每个牛宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情.熊大妈请你帮助完成这个重任,洗完衣服后,你就要弄干衣服.衣服在自然条件下用 11 的时间可以晒干 AA 点湿度,抠门 ...

最新文章

  1. 一份面向工程师的Google面试指南!GitHub 9.8万星高赞,中文版发布
  2. 2.34模型--简单字符串查找(占位).c
  3. linux 下 设置 MySQL8 表名大小写不敏感方法,解决设置后无法启动 MySQL 服务的问题
  4. css继承和边框圆角 及 写三角形
  5. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...
  6. 五、Git多人开发:同时变更了文件名和文件内容如何处理?
  7. ACM基础之取消cin与stdio的同步
  8. python 字符串和时间格式(datetime)相互转换-
  9. SAP UI5 Opportunity type long description empty issue
  10. ai边缘平滑_AI基础教程113:“效果”菜单之“画笔描边”(一)喷溅效果
  11. Harris角点检测原理详解(转载)
  12. 7种最有效的懒人减肥方法,收藏了!
  13. stored to '*' during its initialization is never read
  14. JavaScript函数实例(一)
  15. 搭建教育直播平台,对教育机构有什么优势?
  16. 用免费建站系统做一个专业的企业网站才靠谱!
  17. nnUNet使用教程
  18. 基于STM32的单词记忆测试器
  19. 差动变压器测位移实验 原理及结论
  20. 视频播放密码/视频加密功能

热门文章

  1. ps换证件照背景颜色
  2. 【VTK】装配体Assembly的使用
  3. 直播app服务器部署,直播视频服务器的选择!
  4. 阳明先生固天纵英才矣《王阳明全集》作者: 王守仁
  5. 【Pytorch编程】Pytorch-Ignite v0.4.8的安装以及简单使用
  6. 虚拟机安装centos7.2系统
  7. SEO和SEM的区别是什么?
  8. 祝贺深圳程序员社区成立
  9. 会员运营五大难题与破解之道
  10. 华尔街持续唱多美股市场,微美全息发布VR设备领涨科技股