hdu 6180 Schedule
Schedule
Print the minimum number K of the machines for performing all schedules, and when only uses K machines, print the minimum sum of all working times.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{
int st;//记录入点和出点
int flag;//如果是入点就+1,否则就-1
}s[*+]; int L[+],R[+];//记录机器的开始时间 和 结束时间 bool cmp(node a,node b)
{
if(a.st != b.st)
return a.st<b.st;//就是按照端点排序
else
return a.flag < b.flag;//因为区间结束的时候 和另一个区间开始的会重叠
//so 让区间先结束 然后在开始 这样子的吧
} void init()
{
memset(L,,sizeof(L));
memset(R,,sizeof(R));
}
int main ()
{
int t;
scanf("%d",&t);
while (t--)
{
init();
int n;
scanf("%d",&n);
int m=;
for(int i=;i<n;i++)
{
int st,e;
scanf("%d %d",&st,&e);
s[m].st = st,s[m++].flag=;//左端点+1
s[m].st = e,s[m++].flag=-;//右端点-1
}
sort(s,s+m,cmp);
int sum=,ans=;
for(int i=;i<m;i++)
{
sum+=s[i].flag;
if(sum>ans)
{
ans = sum;
L[sum] = s[i].st;
}
}
sum=,ans=;
for(int i=m-;i>=;i--)
{
sum-=s[i].flag;
if(sum>ans)
{
ans = sum;
R[sum] = s[i].st;
}
}
ll res=;
for(int i=;i<=ans;i++)
{
res += (R[i]-L[i]);
}//因为最后就是R-L 所以这里不用管 R[i]和L[i]是否对应
cout<<ans<<" "<<res<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
struct node{
int l,r;
bool operator <(const node a)const{
return l<a.l;
}
}seg[];
multiset<int>s;
multiset<int>::iterator it;
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
s.clear();
int n;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d %d",&seg[i].l,&seg[i].r);
}
int ans = ;//记录所用机器数量
long long res = ;//记录时间
sort(seg,seg+n);
for(int i=;i<n;i++)
{
it = s.upper_bound(seg[i].l);//寻找 >= seg[i].l 的r
if(it == s.begin())
{
ans++; //找不到 就重新开一个机器
res += seg[i].r - seg[i].l;
s.insert(seg[i].r);
continue;
}
it--;//这里就是离该i区间的起始点最近的 结束点
res += seg[i].r - *it;//把该i区间的结束点 接上上个结束点 这样就不用管 起始点在哪里了
s.erase(it);//把当前区间结束点删除
s.insert(seg[i].r);//重新更新
}
cout<<ans<<" "<<res<<endl;
}
}
hdu 6180 Schedule的更多相关文章
- 2017多校第10场 HDU 6180 Schedule 贪心,multiset
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6180 题意:给了一些任务的开始时间和终止时间,现在让我们安排k台及机器,让这些任务在k太机器上最小,并 ...
- HDU - 6180:Schedule(简单贪心)
There are N schedules, the i-th schedule has start time s i si and end time e i ei (1 <= i < ...
- Schedule HDU - 6180 (multiset , 贪心)
There are N schedules, the i-th schedule has start time si and end time ei (1 <= i <= N). Ther ...
- hdu 1534 Schedule Problem (差分约束)
Schedule Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 6180贪心
题意:有m个工程,一台机器在同一时间只能运行一个工程,告诉你每个工程的起始时间和结束时间,求出最少要多少个机器以及最小的机器总运行时间(机器开始了就不能停了,直到用完该台机器才停止). 题解:由于这里 ...
- HDU 3572 Task Schedule(拆点+最大流dinic)
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu 1150 Machine Schedule 最少点覆盖转化为最大匹配
Machine Schedule Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- hdu 3572 Task Schedule 网络流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572 Our geometry princess XMM has stoped her study i ...
- hdu 1150 Machine Schedule 最少点覆盖
Machine Schedule Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
随机推荐
- 【python-opencv】15-图像阈值
[微语]立志要如山,行道要如水.不如山,不能坚定,不如水,不能曲达 import cv2 as cv import numpy as np from matplotlib import pyplot ...
- IO流(10)复制多级文件夹
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import ja ...
- javaScript高级教程(八)-----正则表达式温故知新
1.RegExp对象:五个属性二个方法 五个属性:global, ignoreCase,multiline,lastIndex,source 二个方法: exec()--模式匹配 test()--检测 ...
- word2vec原理(一) CBOW+Skip-Gram模型基础
word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系.本文的讲解word2vec原理以Githu ...
- eigen quick reference
参考: http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt // A simple quickref for Eigen. Add anyth ...
- 使用jmeter进行websocket协议压测
第一步:添加websocket sampler组件 可以使用plugins manager进行添加,首先下载plugins manager组件: 下载路径: https://jmeter-plugi ...
- selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动 selenium webdriver testng自动化测试数据驱动 一.数据驱动测试概念 数据驱动测试是相同的测试脚本使用不同的 ...
- cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记
理论部分 有限时间动作类继承自Action类,被 ActionInstant(即时动作) , 以及 ActionInterval(持续动作) 继承. 即时动作是会立即被执行的动作,被 CallFunc ...
- linux printf
[root@LocalWeb01 ~]# printf '%s%s%s\n' 1 2 3 41234 [root@LocalWeb01 ~]# printf '%s%s%s' 1 2 3 41234 ...
- 026-chmod命令
语法# chmod [ 选项参数 ] 选择修改权限的对象 权限的改变 目标文件 语义:对哪些目标文件的哪些权限进行修改. (1)# chmod -R ugo +r /home/apple.将 ...