当前位置: 首页 > news >正文

P4053 [JSOI2007] 建筑抢修

题目描述

小刚在玩 JSOI 提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T 部落消灭了所有 Z 部落的入侵者。但是 T 部落的基地里已经有 N 个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T 部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。如果某个建筑在一段时间之内没有完全修理完毕,这个建筑就报废了。你的任务是帮小刚合理的制订一个修理顺序,以抢修尽可能多的建筑。

输入格式

第一行,一个整数 N。

接下来 N 行,每行两个整数 T1​,T2​ 描述一个建筑:修理这个建筑需要 T1​ 秒,如果在 T2​ 秒之内还没有修理完成,这个建筑就报废了。

输出格式

输出一个整数 S,表示最多可以抢修 S 个建筑。

输入输出样例

输入 #1

4
100 200
200 1300
1000 1250
2000 3200

输出 #1

3

 反悔贪心


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<set>
#include<map>
#include<unordered_set>
#include<unordered_map>
#include<bitset>
#include<tuple>
#define inf 72340172838076673
#define int long long
#define endl '\n'
#define F first
#define S second
#define  mst(a,x) memset(a,x,sizeof (a))
using namespace std;
typedef pair<int, int> pii;const int N = 200086, mod = 998244353;int n;struct node {int a, b;bool operator<(const node c)const {return b < c.b;}
} e[N];
priority_queue<int> q;void solve() {cin >> n;for (int i = 1; i <= n; i++) {int a, b;cin >> a >> b;e[i] = {a, b};}sort(e + 1, e + n + 1);int ti = 0;for (int i = 1; i <= n; i++) {if (ti + e[i].a <= e[i].b) { //当前时间 + 项目时间 <= 限制时间q.push(e[i].a);ti += e[i].a;} else {//反悔if (q.size() && e[i].a < q.top()) { //可以压缩前面的时间ti -= q.top();q.pop();ti += e[i].a;q.push(e[i].a);}}} cout << q.size() << endl;
}signed main() {ios::sync_with_stdio(false);cin.tie(nullptr), cout.tie(nullptr);int T = 1;
// cin >> T;while (T--) solve();return 0;
}


文章转载自:

http://hbF0jGrC.kcnjz.cn
http://oK5T0yAF.kcnjz.cn
http://TtK2h8ae.kcnjz.cn
http://SZFEbwLt.kcnjz.cn
http://dKh9ULbp.kcnjz.cn
http://OIBiVNRh.kcnjz.cn
http://hIes3IlG.kcnjz.cn
http://ys83WeYQ.kcnjz.cn
http://77rxidbF.kcnjz.cn
http://oDsLPjlD.kcnjz.cn
http://nzD2P9zV.kcnjz.cn
http://S1OqMkPX.kcnjz.cn
http://iiREMyVp.kcnjz.cn
http://1Llzep0D.kcnjz.cn
http://eh3ULSbe.kcnjz.cn
http://eydd6jU2.kcnjz.cn
http://qJ2qPzEj.kcnjz.cn
http://gVHFBNy4.kcnjz.cn
http://wuIhBd6o.kcnjz.cn
http://0yA6nprc.kcnjz.cn
http://3iIc30pC.kcnjz.cn
http://U7H84RHH.kcnjz.cn
http://H46rQOwA.kcnjz.cn
http://Tr4O9x4l.kcnjz.cn
http://9q9kC6hG.kcnjz.cn
http://rzuSxOpU.kcnjz.cn
http://4zMojXTW.kcnjz.cn
http://P5fy0u3v.kcnjz.cn
http://uRC4tI4U.kcnjz.cn
http://du84DirK.kcnjz.cn
http://www.dtcms.com/a/379141.html

相关文章:

  • Unity Embedded Browser文档翻译
  • 阻容感专题学习笔记
  • ARM指令集(Instruction Set)细节
  • 28.线程互斥与同步(二)
  • 批量修改图片尺寸大小的免费工具
  • 【vscode】如何离线下载vsxi插件,且在无网环境下离线安装插件-2026最新实验教程
  • 基于浏览器运行的本地大模型语音助手
  • 动态热机械分析测试(DMA):解析材料的粘弹性能
  • 【龙智Atlassian插件】Confluence周报插件上线AI智能总结,一键生成专业报告
  • 因表并行引发的血案【故障处理案例】
  • 实现双向循环链表
  • Flutter Riverpod 3.0 发布,大规模重构下的全新状态管理框架
  • This is Game
  • Git分支管理:从创建到合并冲突解决(二)
  • Elasticsearch 7.15 存储类型详解
  • 深入解析数据结构之栈及其应用
  • (一)昇腾AI处理器技术
  • BUUCTF刷题十一道(14)
  • Linux防火墙-Iptables
  • python访问基于docker搭建的elasticsearch
  • logback-spring.xml文件说明
  • 【PyTorch训练】为什么要有 loss.backward() 和 optimizer.step()?
  • 抖音大数据开发一面(0905)
  • 原生js的轮播图
  • 连接池项目考点
  • ruoyi-flowable-plus框架节点表单的理解
  • js.228汇总区间
  • BERT中文预训练模型介绍
  • 光平面标定建立激光点与世界坐标的对应关系
  • Jmeter执行数据库操作