codeforces 523D tatistics of Recompressing Videos
一个称为DH(DogHouse)的狗的社交网络有k台专用服务器来重新上传可爱的猫的上传视频。每个视频上传后,应该在一个(任何)服务器上重新压缩,之后才可以保存在社交网络中。
我们知道每个服务器需要一秒钟来重新压缩一分钟的片段。因此,任何服务器需要m秒钟来重新压缩m分钟的视频。
我们知道每个n个视频上传到网络的时间(从所有服务器开始工作的时间开始)。所有视频都会出现在不同的时刻,并按照他们出现的顺序重新压缩。如果有些视频出现在时间s,那么它的再压缩可以立即从那个时刻开始。当所有服务器都忙时,有些视频可以等待重新压缩。在这种情况下,只要服务器可用,它立即开始重新压缩另一个视频。正在等待重新压缩的视频进入队列。如果视频开始被重新压缩,那么有些服务器可用,那么其中任何一个开始重新压缩视频。
对于每个视频,找到停止重新压缩的那一刻。
输入:
第一行n,k<=5*10^5表示视频数,有k台服务器
接下来n行每行表示一个视频,分别是ai,bi<=10^9。为开始时间与压缩时间
输出:
每个点的最小结束时间
3 2
1 5
2 5
3 5
6
7
11
6 1
1 1000000000
2 1000000000
3 1000000000
4 1000000000
5 1000000000
6 3
1000000001
2000000001
3000000001
4000000001
5000000001
5000000004
数据保证是递增排序的,所以不要排序
所以直接贪心,当堆中满了,选择完成时间最靠前的视频pop
所以堆维护完成时间,算出视频完成时间后加入堆
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long LL;
struct Node
{
LL a,b,num;
}a[];
priority_queue<LL, vector<LL>,greater<LL> >q;
LL n,m,sum,t[];
LL max(LL a,LL b)
{
if (a<b) return b;
else return a;
}
int main()
{LL i,j;
//freopen("water.in","r",stdin);
//freopen("water.out","w",stdout);
cin>>n>>m;
for (i=;i<=n;i++)
{
scanf("%I64d%I64d",&a[i].a,&a[i].b);
a[i].num=i;
}
//sort(a+1,a+n+1,cmp);
for (i=;i<=n;i++)
{
if (sum<m)
{
sum++;
q.push(a[i].a+a[i].b);
t[i]=a[i].a+a[i].b;
}
else
{
LL tmp=q.top();
q.pop();
q.push(max(tmp,a[i].a)+a[i].b);
t[i]=max(tmp,a[i].a)+a[i].b;
}
}
for (i=;i<=n;i++)
printf("%I64d\n",t[i]);
}
codeforces 523D tatistics of Recompressing Videos的更多相关文章
- D. Statistics of Recompressing Videos
D. Statistics of Recompressing Videos time limit per test 3 seconds memory limit per test 256 megaby ...
- 【codeforces】【Round#523D】TV shows
题意:n个节目,每个节目的播放时间为[li,ri],你需要选择一些电视机全部播放这些节目,一台电视机不能同时播放多个节目,选择一个新的电视机代价为x , 如果某台电视机的使用时间为[Li,Ri]需要付 ...
- Codeforces Round #588 (Div. 2) E. Kamil and Making a Stream(DFS)
链接: https://codeforces.com/contest/1230/problem/E 题意: Kamil likes streaming the competitive programm ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
随机推荐
- 听翁恺老师mooc笔记(7)--字符串1
C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什 ...
- alpha-咸鱼冲刺day4
一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 QAQ具体工作量没啥进展.但是前后端终于可以数据交互了!.. 四,问题困难 日常啥都不会,百度真心玩一年. 还得自学nodejs ...
- 数据结构与算法 —— 链表linked list(02)
我们继续来看链表的第二道题,来自于leetcode: 两数相加 给定两个非空链表来代表两个非负整数,位数按照逆序方式存储,它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了 ...
- 美团点餐—listview内部按钮点击事件
PS:长时间不写博客了,今天来写一下美团的这个点餐界面,今天先写一个加号减号的接口调用,下一篇是整体,有点菜,评价,商家,还有左边的listview和右边的展示项.进入这篇正题,像listview,G ...
- Oracle数据库游标精解
游标 定义:标识结果集中数据行的一种容器(CURSOR),游标允许应用程序对查询语句返回的行结果集中的每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作.实际上是一种能从包括多条数据记录 ...
- Mego开发文档 - 复杂保存操作
复杂保存操作 Mego框架还提供了更强大的数据更新API,以简化开发工作,同时也保证的性能. 指定属性添加数据 本列中指定插入一个数据对象,并且只会插入三列数据,最后两个属性是以表达式的形式插入. u ...
- sts 和 lombok
1.安装lombok.jar到sts.exe所在目录 如果是eclipse,需要放到eclipse.exe所在目录,同理myeclipse. 2.修改sts.ini配置使用lombok 如果是ecli ...
- java 数组排序方法整理,简单易懂,
1.快速排序:首先是最简单的Array.sort,直接进行排序: public static void main(String[] args) { int[] arr = {4,3,5,1,7,9,3 ...
- 【iOS】UIViewController基类的实现
继承是面向对象编程语言的三大特性之一,写好基类会给App的开发带来极大的方便.在iOS开发中,一般一个页面就对应一个ViewController,ViewController在开发中用的也很多,写一个 ...
- Python入门之PyCharm的快捷键与常用设置和扩展(Mac系统)
1. 快捷键 2 . PyCharm的常用设置和扩展 ------------------------------------------------------------------------- ...