济南学习 Day 1 T2 am

死亡
【问题描述】
现在有M个位置可以打 sif,有N +1个人在排队等着打 sif。现在告诉你 个人每个人需要多长的时间打 sif,问你第N +1个人什么时候才能打 sif。 (前N
个人必须按照顺序来)
【输入格式】
第一行两个整数N,M如上所述。
接下来N行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】
3 2
1
1
1
【样例输出】
1
【样例解释】
山里有座庙。
【数据规模与约定】
对于100%的数据,每个人所需用的时间不超过10 5 。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <iostream>
 6 #include <cstring>
 7 #include <cmath>
 8 #include <queue>
 9 using namespace std;
10 priority_queue<int, vector<int>, greater<int> > a;
11 int main()
12 {
13     freopen("death.in","r",stdin);
14     freopen("death.out","w",stdout);
15     int n,i,t,ok=0,x=0,k;
16     scanf("%d%d",&n,&k);
17     for(int i=1;i<=k;i++)
18       a.push(0);
19     for(i=0; i<n; i++)    
20     {
21         scanf("%d",&t);
22         int now=a.top();
23         a.pop();
24         now+=t;
25         a.push(now);
26     }
27     /*int maxx=0;
28     while(!a.empty())
29     {
30         maxx=a.top();
31         a.pop();
32     }    */
33     cout<<a.top()<<endl;
34     fclose(stdin);
35     fclose(stdout);
36     return 0;
37 }

另附测试数据:

输入:
10 10
42
18468
6335
26501
19170
15725
11479
29359
26963
24465
输出:
42
测试点一

其余的见网盘

思路:优先队列,打到最后的时候,堆顶的那个人的打完时间即为第N+1个人开始打sif的时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七情六欲·

学生党不容易~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值