一道贪心题,看数据范围就知道要套一个数据结构上去。

别走啊不是什么很高级的数据结构

考虑最朴素的想法,按建筑的抢修时间排序并先拿小的

然后随便想想都可以找到一堆反例

所以我们就直接考虑模拟这个过程,按报废时间排序

我们扫描到一个建筑时,分情况讨论:

  • 如果可以修好,直接拿去修。并且把这个建筑扔到一个堆里(大根堆)。为后面的操作做准备。
  • 如果不能修好,就将这个建筑的修理时间\(t_i\)和堆顶的元素的\(t_j\)比较。若\(t_i<t_j\),我们就弹出堆顶并选择修理这个建筑(也要扔到堆里)

贪心的正确性很好证明,我们在面对一个建筑无法修好时,若可以放弃之前的一个占用时间更大的建筑而转修它,肯定会减少总耗时

CODE

#include<cstdio>
#include<cctype>
#include<queue>
#include<algorithm>
using namespace std;
const int N=150005;
priority_queue <int> big;
struct data
{int t,w;
}a[N];
int n,ans; long long tot;
inline char tc(void)
{static char fl[100000],*A=fl,*B=fl;return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{x=0; char ch; while (!isdigit(ch=tc()));while (x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));
}
inline bool cmp(data a,data b)
{return a.t<b.t;
}
int main()
{//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);register int i; read(n);for (i=1;i<=n;++i)read(a[i].w),read(a[i].t);sort(a+1,a+n+1,cmp);for (i=1;i<=n;++i){if (tot+a[i].w<=a[i].t) tot+=a[i].w,++ans,big.push(a[i].w); else{if (a[i].w<big.top()) tot-=big.top(),big.pop(),big.push(a[i].w),tot+=a[i].w;}}return printf("%d",ans),0;
}

转载于:https://www.cnblogs.com/cjjsb/p/9439267.html

Luogu P4053 [JSOI2007]建筑抢修相关推荐

  1. P4053 [JSOI2007] 建筑抢修(反悔贪心)

    P4053 [JSOI2007] 建筑抢修https://www.luogu.com.cn/problem/P4053 #include <iostream> #include <c ...

  2. 洛谷——P4053 [JSOI2007]建筑抢修

    P4053 [JSOI2007]建筑抢修 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个 ...

  3. 洛谷P4053 [JSOI2007]建筑抢修

    放题解 题目传送门 放代码 #include <bits/stdc++.h>//万能头 #define MAXN 150000//最多的建筑数量(数据范围) using namespace ...

  4. bz 1029: [JSOI2007]建筑抢修

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MB Submit: 3104  Solved: 1392 [Submit][Sta ...

  5. BZOJ 1029: [JSOI2007]建筑抢修 堆+贪心

    1029: [JSOI2007]建筑抢修 Description 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但 ...

  6. BZOJ 1029: [JSOI2007]建筑抢修【贪心】

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MB Description 小刚在玩JSOI提供的一个称之为"建筑抢修&q ...

  7. 牛客 [JSOI2007]建筑抢修

    牛客 [JSOI2007]建筑抢修:传送门 题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地 ...

  8. Bzoj1029 [JSOI2007]建筑抢修

    Time Limit: 4 Sec  Memory Limit: 162 MB Submit: 4452  Solved: 2006 Description 小刚在玩JSOI提供的一个称之为" ...

  9. 牛客网 【每日一题】5月26日题目精讲 [JSOI2007]建筑抢修

    链接: 文章目录 题目描述 题意: 题解: 题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地 ...

  10. 【每日一题】【[JSOI2007]建筑抢修】

    题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不 ...

最新文章

  1. 《EE Times》评出2020年全球最值得关注的18家传感器公司
  2. ArrayList如何实现插入的数据按自定义的方式有序存放
  3. LINUX-NAT(二)
  4. linux开机启动遇到grub启动_Linux如何跳过grub启动
  5. c/c++ typedef定义函数指针(Hook前奏2)
  6. step1 . day1:工具准备
  7. 在php中使用sockets:从新闻组中获取文章
  8. 你会用while(1)还是for(;;)写循环代码?
  9. 安卓开发设置全屏隐藏标题栏
  10. 比较两个文档的相似程度_您的文档对读者的友好程度如何?
  11. 彻底与高通谈崩?苹果被爆计划自研5G调制解调器
  12. java file 字典查询_File listFiles
  13. 「HNOI 2015」实验比较
  14. xshell左侧导航栏_Axure教程:(初级)导航中的页面切换
  15. 10K 3435热敏电阻阻值表
  16. 最历害的硬盘修复工具PC3000,可重置SMART状态!
  17. Stm32学习笔记(1)-利用TIM1产生SPWM波
  18. 公路自行车入门级推荐java_开学季:9款值得买公路车推荐
  19. 炒股魅力:数据分析侠变身“赚钱机器”
  20. 超写实虚拟人制作教程

热门文章

  1. 【译】你不知道的 Chrome 调试工具技巧 第二十三天:Drawer tips 后续
  2. ubuntu adduser
  3. Redhat6.5中搭建Postfix邮件系统
  4. ruby DBI安装使用指南
  5. Vquery PHP 简单爬虫类
  6. ASP.NET Core MVC 源码学习:详解 Action 的激活
  7. afnetworking 和 asihttprequest 强制修改http连接的host地址
  8. php规范PSR-3(日志接口)
  9. 建立属于自己的Cydia源,并获取cydia中的deb安装包,cyder不报错汉化版
  10. samba和nfs的自动挂载