优先队列练习(又是我大钟神)

【问题描述】

现在有m个位置可以打 sif,有n+1个人在排队等着打 sif。现在告诉你 个人每个人需要多长的时间打 sif,问你第? +1个人什么时候才能打 sif。 (前?
个人必须按照顺序来)

【输入格式】

第一行两个整数n,m如上所述。
接下来?行每行一个整数代表每个人所需要用的时间。

【输出格式】

一行一个整数表示答案。

【样例输入】

3 2
1
1
1

【样例输出】

1

【样例解释】

山里有座庙,庙里住着钟神。

【数据规模与约定】

对于100%的数据,每个人所需用的时间不超过10 5 。
测试点 n m 测试点 n m
1 10 10 1 5000 500
2 20 10 2 100000 5000
3 50 10 3 100000 10000
4 1000 500 4 100000 20000
5 2000 500 5 100000 50000

思路:

  priority_queue(优先队列)维护m个位置上打sif的人已经用的时间总和;

  每次根据优先队列的性质来维护最小的那个位置;

  等到n次维护之后输出最小值;

  但是我们维护的是最小值,所以我们需要的是一个小根堆,但是我着实不愿手写堆(毕竟是个蒟蒻);

  所以我们对大根堆(优先队列)进行一丝丝的优化使他成为一个稍稍变态的小根堆;

  这个优化是什么呢?

  哈

  就是所有的元素都乘-1;

  来,上代码:

#include<queue>
#include<cstdio>

using namespace std;

int n,m,ai[100001],cur;

char ch;

priority_queue<int>q;

void qread(int &x)
{
    x=0;ch=getchar();
    while(ch>‘9‘||ch<‘0‘) ch=getchar();
    while(ch<=‘9‘&&ch>=‘0‘){x=x*10+(int)(ch-‘0‘);ch=getchar();}
}

int main()
{
    qread(n),qread(m);
    for(int i=1;i<=n;i++)
    {
        qread(ai[i]),ai[i]*=-1;
        if(q.size()<m) q.push(ai[i]);
        else
        {
            cur=q.top();
            q.pop();
            cur+=ai[i];
            q.push(cur);
        }
    }
    cur=q.top()*(-1);
    printf("%d\n",cur);
    return 0;
}
时间: 2024-10-20 10:13:33

优先队列练习(又是我大钟神)的相关文章

二维背包(钟神想要的)(不是DP)

[问题描述] 背包是个好东西,希望我也有.给你一个二维的背包,它的体积是? × ?.现在你有一些大小为1× 2和1×3的物品,每个物品有自己的价值.你希望往背包里面装一些物品,使得它们的价值和最大,问最大的价值和是多少. [输入格式] 第一行一个整数?代表该测试点的数据组数.对于每组数据,第一行有四个整数?,?,? 1 ,? 2 ,其中? 1 ,? 2 分别代表大小为1× 2和大小为1 × 3的物品个数.1 × 2 接下来一行有? 2 个数代表每个1 × 3物品的价值. [输出格式] 对于每组询

时间差(钟神的玩笑)

[题目描述] 给你两个日期,问这两个日期差了多少毫秒. [输入格式] 两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss”这种形式.第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份. [输出格式] 一行一个整数代表毫秒数. [样例输入 1] 2000-01-01 00:00:002000-01-01 00:00:01 [样例输出 1] 1000 [样例输入 2] 2000-01-01 00:00:002000-11-11 00:00:00 [

AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792

由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500005 #define ll long long #define llf ll #define INF 0x7fffffff #define True_Ans "damushen" #define False_Ans "yuanxing&

大钟的ios开发之旅(2)————简单说说ios中ARC与非ARC模式下的property的变量修饰词

/******************************************************************************************** * author:[email protected]大钟 * E-mail:[email protected] *site:http://www.idealpwr.com/ *深圳市动力思维科技发展有限公司 * http://blog.csdn.net/conowen * 注:本文为原创,仅作为学习交流使用,转

热烈庆祝李宁老师荣获51CTO三周年十大男神称号,视频课程优惠劵大放送了

凡购买李宁老师优惠劵的学员,可以使用下面的优惠劵进行购买. 李宁老师的课程地址:http://edu.51cto.com/lecturer/user_id-974126.html IT圈最受喜爱的十大男神,有图有真相 http://news.51cto.com/art/201607/514139.htm 优惠劵的使用规则:只能购买优惠劵面值3倍以上的课程.如100元优惠劵,购买300元以上的课程可用. 分别提供了100.50两种面值的优惠劵各10张.在使用过程中发现某张优惠劵已经使用,可以更换其

大钟的ios开发之旅(4)————简单谈谈ios程序界面实现的三种方式(代码创建,xib和storyboard)

/******************************************************************************************** * author:[email protected]大钟 * E-mail:[email protected] *site:http://www.idealpwr.com/ *深圳市动力思维科技发展有限公司 * http://blog.csdn.net/conowen * 注:本文为原创,仅作为学习交流使用,转

【优先队列-求第Ki大的数】Black Box

Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8637   Accepted: 3542 Description Our Black Box represents a primitive database. It can save an integer array and has a special i variable. At the initial moment Black Box is empt

Cocos引擎现身 IndiePrize 全球游戏开发者大会!Cocos的两大男神成为压轴嘉宾

2019全球游戏开发者大会今天11月10日,在深圳南山海上世界文化艺术中心拉开帷幕.除了号称精品游戏"奥斯卡"的IndiePrize将在现场展开最终角逐,更有来自美国.俄罗斯.澳大利亚.新加坡.马来西亚.乌克兰等全球50多个国家和地区的游戏大佬前来交流.演讲,共同推动游戏产业的发展.当然,这次我们最可爱的"Cocos"也来了! 大会的第一天是一些游戏行业还有技术的演讲:第二天主要是IndiePrize的评选:第三天下午还有传说中的 panda 和 jare 的两个

Luogu P3792 由乃与大母神原型和偶像崇拜

题意 1.修改x位置的值为y 2.查询区间 [ l , r ] 是否可以重排为值域上连续的一段(形成公差为1的等差数列)  Solution 区间问题易想到用线段树,但是直接维护序列能否形成公差为1的等差数列并不简单. 考虑哈希:1. 知道区间最大值.最小值,check : maxv - minv ?= r - l 2. 维护区间和,check : 当前区间的sum ?= 已知最大最小值的等差数列之和.但是很容易卡,如:1,3,5,7 与 1,4,4,7 3. 维护区间平方和,check : 当