zoukankan      html  css  js  c++  java
  • 露娜晒衣服

    【题目背景】

    猪妈妈生病了,于是家里堆了好多衣服没有洗。露娜担负起了这个重任。洗完衣服后,她就要弄干衣服。衣服在自然条件下用1的时间可以晒干A点湿度。而作为贫穷百姓的露娜用她攒了多年的零花钱买了1台烘衣机。使用烘衣机可以让你用1的时间使1件衣服除开自然晒干的A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用。

    【题目描述】

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

    【输入格式】

    第一行N,A,B,接下来N行,每行一个数,表示衣服的湿度(1<=湿度,A,B,M<=500000,1<=N<=500000).

    【输出格式】

    一行,最少时间

    【输入样例】Dry.in

    3 2 1

    1

    2

    3

    4

    5

    【输出样例】Dry.out

    1

    【样例解析】

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

    【胡乱分析】

    在输入完每件衣服的湿度后,对湿度进行排序,对湿度最大的衣服开始烘干,同时其它衣服的湿度减去自然晾干的点数。。。。这个方法显然过不了数据范围啊。所以换一种思路。在输入时,记录一个湿度对应的衣服有多少件。然后对湿度最大的衣服进行烘干,这样湿度最大的衣服便减少了一件,由于它只烘干了b点,是不是完全烘干并不知道,所以湿度为[最大湿度-b]的衣服增加了一件。那么直到湿度最大的衣服都没有了,这时新的最大湿度便是下一个了。

    【代码参考】

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<queue>
     7 using namespace std; 
     8 priority_queue<int>q;//优先队列 
     9 int main()
    10 {
    11         freopen("dry.in","r",stdin);
    12         freopen("dry.out","w",stdout);
    13     int n,a,b,shidu;
    14         int t=0,k=0;
    15     scanf("%d%d%d",&n,&a,&b);
    16     for(int i = 1;i <= n;i++)
    17     {
    18         scanf("%d",&shidu);
    19         q.push(shidu);
    20     }
    21     while(!q.empty())
    22     {
    23         int max = q.top();//烘干当前湿度最大的衣服 
    24         q.pop();//当前湿度最大的衣服减少一件 
    25         if(k >= max)break;//当所有衣服都干了时,退出循环 
    26         max -= b;//烘干后的湿度 
    27         q.push(max);//相应适度的衣服增加一件 
    28         k += a;//所有衣服自然晾干数 
    29         t++;//记录时间 
    30     }
    31     printf("%d",t);
    32     return 0;
    33 }
  • 相关阅读:
    开发微信App支付
    SAP 数据类型
    SAP RFC函数
    单点登录
    集中式与分布式
    SAP 表类型
    独立软件供应商
    SAP 优缺点
    SAP 使用
    SAP 费用
  • 原文地址:https://www.cnblogs.com/peppa/p/8546861.html
Copyright © 2011-2022 走看看