奶牛晒衣服

  “愉快”的端午欢乐赛就这样落下了帷幕,作为蒟蒻的我显然是来给各位dalao垫名次的。。

【问题描述】

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

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

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

【输入格式】

输入文件dry.in第一行N,A,B;接下来N行,每行一个数,表示衣服的湿度.

【输出格式】

输出文件dry.out一行,最少时间t

【输入输出样例】


dry.in


dry.out


4 1 1

1

1

2

3


2

【数据规模】

60% t*N<1000000000

100% 1<=湿度,A,B<=500000,1<=N<=500000

看到题后直接就想到了sort,然鹅炸了五个点,一个点很玄学的WA。。

显然用优先队列就会好很多,并且很简洁方便。

#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int N,A,B,t;
int main()
{
    priority_queue<int> q;
    scanf("%d%d%d",&N,&A,&B);
    for(int i=1;i<=N;++i)
    {
        int x;
        scanf("%d",&x);
        q.push(x);
    }
    for(;;)
    {
        ++t;
        int Mx=q.top();
        q.pop();
        Mx-=B;
        q.push(Mx);
        int m=q.top();
        if(A*t>=m) break;
    }
    printf("%d\n",t);
    return 0;
}


下面是队列相关

头文件:#include<queue>

定义队列:queue<类型>名称

常用函数:以队列q,元素有5,7,4,2,6为例

     q.push(3)->入队,3,5,7,4,2,6

     q.pop()->出队,7,4,2,6

     q.size()->计算队列中元素个数,cnt=5

     q.empty()->判断队列是否为空,空则返回true

     q.front()->取队首元素但不消除,head=5,q=5,7,4,2,6

     q.back()->取队尾元素但不消除,last=6,q=5,7,4,2,6

优先队列:priority_queue<类型>名称(优先队列真的是好好用qwq)

优先队列和队列类似,但排在队首的元素是队列中优先级最高的元素,pq是一个越小的整数优先级越高的队列,函数同队列基本一样,只是取队首元素需要用q.top()而不是q.front

时间: 2024-08-10 17:21:45

奶牛晒衣服的相关文章

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

1.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任.洗完衣服后,你就要弄干衣服.衣服在自然条件下用1的时间可以晒干A点湿度.抠门的熊大妈买了1台烘衣机.使用烘衣机可以让你用1的时间使1件衣服除开自然晒干的A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用. N件的衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服

NOIP模拟赛-奶牛晒衣服(dry)

一.奶牛晒衣服(dry) [问题描述] 在熊大妈英明的带领下,时针和它的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任.洗完衣服后,你就要弄干衣服.衣服在自然条件下用1的时间可以晒干A点湿度.抠门的熊大妈买了1台烘干机.使用烘干机可以让你用1的时间使1件衣服除开自然晒干的A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用. N件衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服的

奶牛晒衣服(题解)

奶牛晒衣服[问题描述]在熊大妈英明的带领下,时针和他的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情.圣人王担负起了这个重任.洗完衣服后,你就要弄干衣服.衣服在自然条件下用1 的时间可以晒干A 点湿度.抠门的熊大妈买了1 台烘衣机.使用烘衣机可以让你用1 的时间使1件衣服除开自然晒干的A 点湿度外,还可烘干B 点湿度,但在1 的时间内只能对1 件衣服使用.N 件的衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服的最

洛谷——P1843 奶牛晒衣服

https://www.luogu.org/problem/show?pid=1843#sub 题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣 服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在 自然条件下用 1 的时间可以晒干 A 点湿度 . 抠门的熊大妈买了 1 台烘衣机 . 使用烘衣机可以让你用 1 的时间使 1 件衣服除了自然晒干 A 点湿度外,还 可以烘干 B 点湿度,但在 1 的时间内只能对

luogu P1843 奶牛晒衣服

模拟T1,贪心+排序或者二分都行 贪心策略很好想,显然每次晒耗时最久的衣服最优,问题是要在每次晒完后都再次找到耗时最久的衣服,不能每次都sort,所以单调队列或者大根堆 二分也不难,直接二分时间,筛一遍衣服统计需要烘干的时间然后判断是否满足就行 模拟的时候敲了贪心+排序,所以这里放二分的代码(滑稽),个人感觉贪心更好写 #include<cstdio> #include<algorithm> #include<iostream> using namespace std;

P1843 奶牛晒衣服

题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣 服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在 自然条件下用 1 的时间可以晒干 A 点湿度 . 抠门的熊大妈买了 1 台烘衣机 . 使用烘衣机可以让你用 1 的时间使 1 件衣服除了自然晒干 A 点湿度外,还 可以烘干 B 点湿度,但在 1 的时间内只能对 1 件衣服使用. N 件衣服因为种种原因而不一样湿 , 现在告诉你每件衣服的湿度 , 要你 求出

【Luogu1843】奶牛晒衣服

点此进入原题 算法:二分答案 题解: 本题算法就是二分所需的时间啦 二分答案的难点大部分都在check函数上吧 然而我居然把二分模版打错了好囧啊 总的来说这题还是不难的啊~ 代码: #include<cstdio> const int N=500005; int n,a,b,t[N],l=0,r=N; bool check(int x) { int ret=x; //x-ret表示需要的烘干机烘干的天数. for(int i=1;i<=n;i++) { int tmp=t[i]-a*x;

P1843 奶牛晒衣服(二分)

思路:就是一个模板,只是找最小化而已.在判断函数里面:当湿度<=x*A不判断, 反之sum+=(a[i]-x*A)/B+(a[i]-x*A)%B?1:0; #include<iostream> #include<algorithm> #include<cmath> using namespace std; const int maxn = 5e5 + 10; int a[maxn], n, A, B, maxx, ans, mid; bool check(int

03day2

03day1 不说了,图论题因为没有把加边的过程放到循环里导致只有 10 分.(不要吐槽我啊...) ? 竞赛排名 排序 [问题描述] [输入] 文件的第一行为参赛总人数 N(1≤N≤1000),从第二行到第 N 行依次为编号 1 到编号为 N 的选手的成绩,每行有 8 个 0-100 之间的整数,代表该选手的 8 项竞赛成绩 Xi1,Xi2,-,Xi8.同一行相邻两个数之间用一个空格符隔开. [解题过程] 看题目用了好久.只要能理解题意基本上没问题.(至于 lzw 大神把数据类型设成 long