【bzoj1029】[JSOI2007]建筑抢修
2016-03-25 21:04
387 查看
按照t2从小到大排列之后贪心。
若当前任务可以插入,则插入。
若当前任务不可以插入,分两种情况:
①当前任务的耗时大于等于之前插入的任务的最大耗时:跳过当前任务
②当前任务的耗时小于之前插入的任务的耗时:将最前插入的耗时最大的那个任务删除,插入当前任务
用堆维护
若当前任务可以插入,则插入。
若当前任务不可以插入,分两种情况:
①当前任务的耗时大于等于之前插入的任务的最大耗时:跳过当前任务
②当前任务的耗时小于之前插入的任务的耗时:将最前插入的耗时最大的那个任务删除,插入当前任务
用堆维护
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using
namespace
std;
#define MAXN 150010
priority_queue<
int
>q;
int
n;
int
i;
int
res,ans,tmp;
struct
Node
{
int
t,d;
}a[MAXN];
int
cmp(Node x,Node y)
{
return
x.d<y.d;
}
int
main()
{
scanf
(
"%d"
,&n);
for
(i=1;i<=n;i++)
scanf
(
"%d%d"
,&a[i].t,&a[i].d);
sort(a+1,a+n+1,cmp);
for
(i=1;i<=n;i++)
if
(res+a[i].t<=a[i].d)
{
ans++;
res+=a[i].t;
q.push(a[i].t);
}
else
{
tmp=q.top();
if
(a[i].t<tmp)
{
q.pop();
q.push(a[i].t);
res+=a[i].t-tmp;
}
}
printf
(
"%d"
,ans);
return
0;
}
相关文章推荐
- ExtJs之Ext.XTemplate:数组填充,访问父对象
- 【bzoj1028】[JSOI2007]麻将
- 【bzoj1015】[JSOI2008]星球大战starwar
- 【bzoj1821】[JSOI2010]Group 部落划分 Group
- 【bzoj1012】[JSOI2008]最大数maxnumber
- JavaScript 操作页面元素
- perl 解json数组
- perl 解json数组
- perl 解json数组
- JQ控制表格隔行换色和悬停换色
- 【JavaScript】使用form表单实现excel下载模板
- js 生成 yyyy-mm-dd 格式的逼格姿势
- javascript中的undefined和null
- 从Web Service获取JSON格式数据
- 【json】数组和对象转换为json
- Xutils请求服务器json数据与下载文件
- javascript中关于继承的理解
- js 里 写两个日期的相差时间
- javascript闭包(Module模式)的用途和高级使用方式
- JavaScript高级-定义函数(类)方法