51nod1205(johnson)
2024-10-11 22:02:59
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1205
题意:中文题诶~
思路:johnson模板题
流水作业调度问题的Johnson算法:
(1)令N1={i|ai<bi}, N2={i|ai>=bi};
(2)将N1中作业按ai的非减序排序;将N2中作业按bi的非增序排序;
(3)N1中作业接N2中作业构成满足Johnson法则的最优调度。
关于johnson算法详细讲解:http://blog.csdn.net/liufeng_king/article/details/8678316
代码:
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std; const int MAXN = 5e4+;
struct node{
int x, y, cnt;
}gg[MAXN]; bool cmp(node a, node b){
return a.cnt < b.cnt;
} bool cmp1(node a, node b){
return a.x < b.x;
} bool cmp2(node a, node b){
return a.y > b.y;
} int main(void){
int n;
scanf("%d", &n);
for(int i=; i<n; i++){
scanf("%d%d", &gg[i].x, &gg[i].y);
gg[i].cnt = gg[i].x-gg[i].y;
}
sort(gg, gg+n, cmp);
int index = ;
while(gg[index].cnt < ){
index++;
}
sort(gg, gg+index, cmp1);
sort(gg+index, gg+n, cmp2);
int ans = gg[].x + gg[].y;
int sum = gg[].x;
for(int i=; i<n; i++){
sum += gg[i].x;
ans = max(sum, ans) + gg[i].y;
}
printf("%d\n", ans);
return ;
}
最新文章
- MySQL版本介绍
- web框架学习列表
- Js 的 this 是什么
- Android Service使用拾遗[阿里工程师分享]
- sql prompt5安装好了 也破解完成了 然后到SQL里面 还是没有提示 是为什么?
- 转 sql 时间转换格式 convert(varchar(10),字段名,转换格式)
- win 10应用商店下载应用错误码0x80070422
- IE浏览器下读取客户端上传的文件大小
- hdu Number Sequence
- sed 工具简介
- 使用Fiddler伪造服务端返回数据,绕过软件试用期验证
- 201521123018 《Java程序设计》第13周学习总结
- Words to Use Instead of ";Very";
- Linux基础 - 系统优化及常用命令
- 安装淘宝镜像cnpm时出现问题及解决方案
- Python3基础知识之日期时间与字符的转换
- 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程
- swift4.2 打印devicetoken
- Core Java-多线程-线程的生命周期
- Git入门基本操作