【贪心】hdu6180 Schedule
题意:给你n个任务的开始时间和结束时间,一个机器同时最多执行一个任务,问你最少要几个机器。保证机器最少的前提下,问你每个机器的开动时间(最后一次关闭-第一次开启)之和最少是多少。
把这些线段画在数轴上,最大的重叠数就是最少要几个机器。
开动时间怎么算呢?第i个机器的开动时间其实就是(再也不需要>=i台机器的第一个位置 - 需要>=i台机器的第一个位置)。对每个机器的这个值求和即可。
要先离散化。
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- typedef long long ll;
- struct Point{
- int p,v;
- }t[200005];
- bool cmp(const Point &a,const Point &b)
- {
- return a.v<b.v;
- }
- int T,n;
- int xs[100005],ys[100005],a[200005],ma[200005],Left[200005],Right[200005];
- int sufmax[200005];
- int main(){
- //freopen("1010.in","r",stdin);
- scanf("%d",&T);
- for(;T;--T){
- memset(a,0,sizeof(a));
- memset(ma,0,sizeof(ma));
- memset(Left,0x7f,sizeof(Left));
- memset(Right,0,sizeof(Right));
- memset(sufmax,0,sizeof(sufmax));
- int all=0;
- scanf("%d",&n);
- for(int i=1;i<=n;++i){
- ++all;
- scanf("%d",&t[all].v);
- t[all].p=all;
- ++all;
- scanf("%d",&t[all].v);
- t[all].p=all;
- }
- sort(t+1,t+all+1,cmp);
- int zy=0;
- if(t[1].p%2==1){
- xs[(t[1].p+1)/2]=++zy;
- }
- else{
- ys[t[1].p/2]=++zy;
- }
- ma[zy]=t[1].v;
- for(int i=2;i<=all;++i){
- if(t[i].v!=t[i-1].v){
- ++zy;
- }
- if(t[i].p%2==1){
- xs[(t[i].p+1)/2]=zy;
- }
- else{
- ys[t[i].p/2]=zy;
- }
- ma[zy]=t[i].v;
- }
- for(int i=1;i<=n;++i){
- ++a[xs[i]];
- --a[ys[i]];
- }
- for(int i=1;i<=zy;++i){
- a[i]+=a[i-1];
- }
- sufmax[zy]=a[zy];
- for(int i=zy-1;i>=1;--i){
- sufmax[i]=max(a[i],sufmax[i+1]);
- }
- int ans=*max_element(a+1,a+zy+1);
- for(int i=1;i<=zy;++i){
- if(Left[a[i]]>2000000000){
- Left[a[i]]=i;
- }
- }
- for(int i=ans-1;i>=1;--i){
- Left[i]=min(Left[i],Left[i+1]);
- }
- for(int i=zy;i>=1;--i){
- if(sufmax[i]!=sufmax[i-1]){
- for(int j=sufmax[i]+1;j<=sufmax[i-1];++j){
- Right[j]=i;
- }
- }
- }
- ll sum=0;
- for(int i=1;i<=ans;++i){
- sum+=(ll)(ma[Right[i]]-ma[Left[i]]);
- }
- printf("%d %lld\n",ans,sum);
- }
- return 0;
- }
【贪心】hdu6180 Schedule的更多相关文章
- 贪心-Course Schedule III
2020-02-01 21:37:39 问题描述: 问题求解: 对于课程来说截止时间在前面的肯定需要优先安排,所以首先需要将courses按照deadline进行排序. 然后只需要不断的加入当前的课程 ...
- 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 < ...
- POJ 3553 Task schedule【拓扑排序 + 优先队列 / 贪心】
Task schedule Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 515 Accepted: 309 Special J ...
- Schedule HDU - 6180 (multiset , 贪心)
There are N schedules, the i-th schedule has start time si and end time ei (1 <= i <= N). Ther ...
- 2017多校第10场 HDU 6180 Schedule 贪心,multiset
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6180 题意:给了一些任务的开始时间和终止时间,现在让我们安排k台及机器,让这些任务在k太机器上最小,并 ...
- 【CodeForces 589F】Gourmet and Banquet(二分+贪心或网络流)
F. Gourmet and Banquet time limit per test 2 seconds memory limit per test 512 megabytes input stand ...
- codeforces 480A A. Exams(贪心)
题目链接: A. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- POJ 1456 Supermarket 区间问题并查集||贪心
F - Supermarket Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- Ferry Loading II_贪心
Description Before bridges were common, ferries were used to transport cars across rivers. River fer ...
随机推荐
- 解决vue代码缩进报错问题 关闭ESlint
前言 使用vue-cli来构建单页SPA应用,提示代码缩进报错 原因分析 通过查看package.json文件我们可以发现,在文件中默认安装了eslint-loader模块,eslint-loader ...
- Coursera在线学习---第八节.K-means聚类算法与主成分分析(PCA)
一.K-means聚类中心初始化问题. 1)随机初始化各个簇类的中心,进行迭代,直到收敛,并计算代价函数J. 如果k=2~10,可以进行上述步骤100次,并分别计算代价函数J,选取J值最小的一种聚类情 ...
- servlet线程不安全
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAE9CAIAAABY1Yv/AAAgAElEQVR4nOy9eVxN2/8/viuaU5kqZW
- python--lxml
''' xpath语法: /:在子节点里面找 //:在子子孙孙里面找 //div:查找当前网页的所有div标签 //div/p:先查找所有div标签,再找div的子标签中的p标签 //div//p:现 ...
- Vim的分屏功能(转)
注:本文属于转载,源地址:http://blog.csdn.net/ithomer/article/details/6035627(博主很牛,欢迎关注) 本篇文章主要教你如何使用 Vim 分屏功能 分 ...
- eclipse 配置jsp
1.安装jdk和jre 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- php性能的问题
一.影响php性能的常见原因 1.php自身语法使用不当 2.php做了不擅长的时期() 3.php的周边环境(服务器Linux,磁盘:文件存储,数据库,缓存:内存,网络:带宽) 4.php自身的短板 ...
- P2885
2885 code[class*="language-"] { padding: .1em; border-radius: .3em; white-space: normal; b ...
- 解决错误:此用户名包含无效字符,请输入有效的用户名。wordpress不能注册中文用户名的问题
wordpress在默认情况下不支持中文用户名,就是在后台添加用户的时候,如果用户名包含中文,则显示”错误:此用户名包含无效字符,请输入有效的用户名.”如何解决这个问题呢? 不用插件的话就需要修改一个 ...
- 【Mac电脑】Jenkins的安装
1.JDK自己下载安装喽, 2.下载Jenkins 下载路径:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.121.1/jenki ...