[JSOI2007]建筑抢修 (贪心)
2024-09-03 16:05:41
题目链接
Solution
可以考虑 \(dp\) ,但是很显然 \((n^2)\) 降不下来.
然后考虑贪心,首先,绝对的正确的是,在同等的情况下,给后面的留更多的时间.
首先按照 \(T_2\) 排序.
然后我们维护一个大根堆 每修理一栋建筑 我们就把这栋建筑的T1值加入堆 若当前无法修理 我们判断堆顶是否比这栋建筑的T1大 如果大 取消修理堆顶,改为修理当前建筑.
Code
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,inf = 2e9, mod = 1e9+7;
typedef long long ll;
int n;
pair<int ,int > P[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&P[i].second,&P[i].first);
int ans = 0;
ll tmp = 0;
sort(P+1,P+n+1);
priority_queue<int > q;
for(int i=1;i<=n;i++)
{
if(P[i].first>=P[i].second+tmp) q.push(P[i].second),ans++,tmp+=P[i].second;
else
{
if(q.empty()) continue;
int k = q.top();
if(k>P[i].second)
{
tmp-=k;
tmp+=P[i].second;
q.pop();
q.push(P[i].second);
}
}
}
printf("%d\n",ans);
return 0;
}
最新文章
- 嵌入式&;iOS:回调函数(C)与block(OC)回调对比
- 在 sublime 中运行 JavaScript 代码
- 关于腾讯云ubuntu服务器tomcat访问慢问题
- 精通Web Analytics 2.0 (2) 内容简介
- android开发之在activity中控制另一个activity的UI更新
- Oracle对索引列同时使用多个聚合函数的性能问题
- Windows搭建SMTP邮件服务器
- asp.net MVC 学习笔记
- test文件伪装
- 网络对抗技术 20165220 Exp3 免杀原理与实践
- 学号 20175212 《Java程序设计》第九周学习总结
- Hdoj 1232.畅通工程 题解
- js操作数组元素
- 变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
- 【AtCoder】AGC018
- (转)Springboot定时任务
- dedecms(织梦系统)如何更新手机版首页模板文件
- mysql故障
- fiddler怎么修改服务器返回参数并发送
- HDU 4585 Shaolin (STL)