建筑抢修 (大根堆+贪心+优先队列+快速排序+2重思想比较)

简介: 建筑抢修 (大根堆+贪心+优先队列+快速排序+2重思想比较)

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


输入格式



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


输出格式



  输出一个整数S,表示最多可以抢修S个建筑.N < 150,000; T1 < T2 < maxlongint


Sample Input


4
100 200
200 1300
1000 1250
2000 3200


Sample Output


3


题目分析,我们要抢修最多的建筑,首先我们把到期时间由大到小排列然后输出看有几个满足条件,然后当不出现可抢修的建筑的时候,我们把修建筑花的时间有大到小排列,然后找后面的看有没有比这个抢修时间花费少的如果有则替换掉进入下一个循环看满不满足,依次循环,最后得到答案。


听懂了记得给个赞鼓励一下,码字不易,用爱发电。


上ac代码。

f58230e9f063709cf3167704f4efdf14.gif


有事你就q我;QQ2917366383


学习算法

#include<iostream>
#include<algorithm>
#include<queue>
const int maxn=1e6+7;
using namespace std;
priority_queue<int>q;
struct yyds{int x,y;
}a[maxn];
int cmp(yyds w,yyds e)
{
  return w.y<e.y;
}
int main()
{
  int t,ans=0,tot=0;
  cin>>t;
  for(int i=1;i<=t;i++)
  {
    cin>>a[i].x>>a[i].y;
  }
  sort(a+1,a+1+t,cmp);
  for(int i=1;i<=t;i++)
  {
    if(tot+a[i].x<=a[i].y)
    {
      tot+=a[i].x;
      ans++;
      q.push(a[i].x);
    }
    else
    {
      if(a[i].x<q.top()&&q.top()!=0)
      {
        tot-=q.top()-a[i].x;
        q.pop();
        q.push(a[i].x);
      }     
    }
  }
  cout<<ans<<endl;
 } 
相关文章
|
SQL 存储 分布式计算
|
11月前
|
机器学习/深度学习 并行计算 测试技术
每天五分钟深度学习:解决for循环效率慢的关键在于向量化
向量化是提升计算效率的重要技术,尤其是在处理大规模数据和进行复杂运算时。通过将for循环转换为向量或矩阵运算,向量化能够充分利用底层高效库和现代CPU的并行计算能力,从而大幅提高运算速度。在深度学习中,向量化是实现高效神经网络训练和预测的关键。
344 23
|
11月前
|
人工智能 编解码 网络架构
GenCast:谷歌DeepMind推出的AI气象预测模型
GenCast是由谷歌DeepMind推出的革命性AI气象预测模型,基于扩散模型技术,提供长达15天的全球天气预报。该模型在97.2%的预测任务中超越了全球顶尖的中期天气预报系统ENS,尤其在极端天气事件的预测上表现突出。GenCast能在8分钟内生成预报,显著提高预测效率,并且已经开源,包括代码和模型权重,支持更广泛的天气预报社区和研究。
832 14
GenCast:谷歌DeepMind推出的AI气象预测模型
|
机器学习/深度学习 监控 数据库
Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码
Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码
|
设计模式 前端开发 Android开发
移动应用开发中的系统架构设计
【9月更文挑战第31天】在本文中,我们将探讨如何设计一个高效、可扩展且易于维护的移动应用系统架构。我们将从基本的MVC模式开始,逐步深入到更复杂的架构模式,如MVP、MVVM和VIPER。我们还将讨论如何选择合适的架构模式以及如何在实际应用中实施这些模式。最后,我们将通过一个简单的代码示例来展示如何在移动应用开发中实现MVC模式。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的学生签到系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的学生签到系统的详细设计和实现(源码+lw+部署文档+讲解等)
212 5
|
存储 搜索推荐 数据建模
Elasticsearch 的数据建模与索引设计
【9月更文第3天】Elasticsearch 是一个基于 Lucene 的搜索引擎,广泛应用于全文检索、数据分析等领域。为了确保 Elasticsearch 的高效运行,合理的数据建模和索引设计至关重要。本文将探讨如何为不同的应用场景设计高效的索引结构,并分享一些数据建模的最佳实践。
530 2
|
监控 测试技术 持续交付
Python 3.x与Python 2.x:不兼容性的深度解析
Python 3.x与Python 2.x之间的不兼容性是一个复杂而重要的问题。尽管迁移可能会带来一些挑战和困难,但考虑到Python 2.x已经停止支持以及Python 3.x带来的诸多改进和优势,迁移是不可避免的。通过了解变化、使用兼容工具、逐步迁移、利用社区资源、编写测试、保持更新、考虑使用Python 3.x的特定功能、重新评估第三方库和框架、备份和版本控制以及测试和部署等策略,你可以成功地将你的代码从Python 2.x迁移到Python 3.x,并享受Python 3.x带来的新功能和改进.
1510 5
|
搜索推荐 关系型数据库 MySQL
/etc/profile,/etc/bashrc,~/.profile,~/.bashrc 的区别及使用
/etc/profile,/etc/bashrc,~/.profile,~/.bashrc 的区别及使用
394 0
|
存储 分布式计算 Java
深入探究JAVA编程语言:概念、应用与实例分析
**JAVA**是广泛应用的高级编程语言,以其易学性、跨平台能力和高效的性能著称。它采用面向对象编程,强调封装、继承和多态,且具备平台无关性、内置安全性和多线程支持。JAVA广泛应用于Web开发(如JSP、Servlet)、移动应用(Android开发)、大数据处理(Hadoop、Spark)和桌面应用。通过一个计算两数之和的简单示例,展示了JAVA的易读性和面向对象特性,帮助读者理解JAVA在实际开发中的运用。