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

反悔贪心学习笔记[浅谈]

贪心是信息学竞赛常考内容,一般来说为选择当前情况下最优情况的算法,非常好写,但部分贪心题目无法使用普通贪心解决,在这些题目中就有一类为反悔贪心。

反悔贪心经常会用到堆来为主答案,例题:
Work Scheduling G
本题很容易发现可以使用贪心来解决,具体地,我们将读入的数据按照 T 2 T2 T2 从小到大排序,然后遍历一遍,然后先把所需要的时间加到 s u m sum sum 中然后将这次所用的时间放入一个大根堆中,然后判断 s u m sum sum 是否大于当前的 T 2 T2 T2 如果小于那么直接修理建筑 a n s + + ans++ ans++,否则就体现出反悔贪心的精髓了,我们把大根堆堆顶的数删去,然后从 s u m sum sum 中减去大顶堆中的数(所需时间),因为大顶堆顶的数是最大的,所以减去后可以省下最多的时间,及之后可以修更多的建筑。

由此获得 Code

#include<bits/stdc++.h>
using namespace std;
struct node{
	int t1,t2;
}a[150005];
bool cmp(node x,node y)
{
	return x.t2<y.t2;
}
long long n,ans,sum;
priority_queue<int> q;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i].t1>>a[i].t2;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++)
	{
		sum+=a[i].t1;
		q.push(a[i].t1);
		if(sum<=a[i].t2)
			ans++;
		else
		{
			sum-=q.top();
			q.pop();
		}
	}
	cout<<ans<<"\n";
	return 0;
}




http://www.kler.cn/news/364400.html

相关文章:

  • Discuz 论坛开发一套传奇发布站与传奇开服表
  • 合约门合同全生命周期管理系统:企业合同管理的数字化转型之道
  • 香港国际金融市场的多元化投资与风险管理策略
  • window7虚拟机VMware与主机共享文件
  • YashanDB学习-数据库SQL基础操作
  • 【前端】如何制作一个自己的网页(18)定义列表
  • 【Axure高保真原型】分级树筛选中继器表格
  • 基于 Python 的机器学习模型部署到 Flask Web 应用:从训练到部署的完整指南
  • 深入计算机语言之C++:类与对象(中)
  • Redis批量获取缓存的方法
  • 【加密系统】华企盾DSC服务台提示:请升级服务器,否则可能导致客户端退回到旧服务器的版本
  • js基础入门篇
  • 【计算机网络 - 基础问题】每日 3 题(五十六)
  • 双十一母婴用品排行榜推荐出炉!建议收藏!看宝妈要买哪些东西
  • NewStarCTF 2023 公开赛道 Web week1-week2
  • 安全见闻(3)
  • 51单片机快速入门之 IIC I2C通信
  • 昇思MindSpore进阶教程--安装常见问题(中)
  • Modbus转IEC61850网关iGate-850实现电力系统采集电力仪表
  • Facebook区块链生态系统:去中心化社交平台的未来
  • docker XML详解
  • 深度学习 简易环境安装(不含Anaconda)
  • Zypher Network Layer3 主网上线,“宝藏方舟”活动是亮点
  • React综合指南(一)
  • 微服务的一些基本概念
  • 【Java】ArrayList相关操作及其案例