[BZOJ1620][Usaco2008 Nov]Time Management 时间管理
2015-09-12 22:13
316 查看
传送门
http://www.lydsy.com/JudgeOnline/problem.php?id=1620题目大意
给定n个任务的花费时间和最晚结束时间,询问最晚开始工作能完成所有任务题解
我们考虑时间上相靠近的两个任务,分别为i和i+1x[i,1]表示完成任务的时间,x[i,2]表示最晚完成时间
ans=ans-x[i,1] (ans<=x[i,2])
ans=x[i,2]-x[i,1] (ans>x[i,2])
注意无解情况
var x:array[0..1005,1..2]of longint; i,n,ans:longint; procedure sort(l,r: longint); var i,j,a,y:longint; begin i:=l; j:=r; a:=x[(l+r) div 2,2]; repeat while x[i,2]<a do inc(i); while a<x[j,2] do dec(j); if not(i>j) then begin y:=x[i,2]; x[i,2]:=x[j,2]; x[j,2]:=y; y:=x[i,1]; x[i,1]:=x[j,1]; x[j,1]:=y; inc(i); dec(j); end; until i>j; if l<j then sort(l,j); if i<r then sort(i,r); end; begin readln(n); for i:=1 to n do readln(x[i,1],x[i,2]); sort(1,n); {x[i,2]} ans:=x[n,2]-x[n,1]; for i:=n-1 downto 1 do if x[i,2]>=ans then ans:=ans-x[i,1] else ans:=x[i,2]-x[i,1]; if ans<0 then writeln(-1) else writeln(ans); end.
相关文章推荐
- 【英语】Bingo口语笔记(78) - let系列
- 第一篇博客
- scrapy爬取博客文章
- HEVC学习之二CTU, CU, CTB, CB, PB, TB
- VS2010在同一个解决方案中有多个工程是,点运行会一直运行最开始的工程,有什么办法解决吗?
- Delphi调用C#写的webservice
- Observer模式-Subject/Observer都有基类接口子类可以双向调用
- SqliteDB 操作数据库
- c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:
- 0912_Collective Intelligence Programming Reading Notes
- Dojo 入门
- html5 Forms
- 单片机
- 【转】深入浅出PageRank算法
- hdu 5432 Pyramid Split(二分搜索)
- hdu 5433 Xiao Ming climbing(最短路)
- java基础--向上/向下转型
- CHM打不开的解决方法
- 经济--票据理财
- VS2010如何在同一个解决方案下建立多个项目以及切换运行不同项目