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

备战蓝桥杯---数据结构与STL应用(入门4)

本专题主要是关于利用优先队列解决贪心选择上的“反悔”问题

话不多说,直接看题:

下面为分析:

很显然,我们在整体上以s[i]为基准,先把士兵按s[i]排好。然后,我们先求s[i]大的开始,即规定选人数不超过s[i]的士兵,下面为图解:

下面为AC代码:

#include<bits/stdc++.h>
using namespace std;
struct node{long long v,s;
}a[1000100];
long long n;
bool cmp(node a,node b){return a.s>b.s;
}
signed main(){cin>>n;for(int i=1;i<=n;i++){scanf("%lld%lld",&a[i].v,&a[i].s);}sort(a+1,a+1+n,cmp);priority_queue<long long,vector<long long>,greater<long long> > q;long long cap=a[1].s,sum=a[1].v,max1=-1;q.push(a[1].v);for(int i=2;i<=n;i++){if(a[i].s==cap){q.push(a[i].v);sum+=a[i].v;if(q.size()>cap){sum-=q.top();q.pop();}}  else{cap=a[i].s;q.push(a[i].v);sum+=a[i].v;while(q.size()>cap){sum-=q.top();q.pop();}}max1=max(max1,sum);}cout<<max1;
}

再来一道类似的:

下面为分析:

类似的,我们指定一个基准,我们按deadline升序排好,从小的开始枚举。

如果前面的时间加当前所需没超当前建筑的deadline,我们就添加。

否则,我们用它与前面所需时间max的比,如果比他小就替换。

下面为AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
struct node{int t1,t2;
}a[150010];
bool cmp(node a,node b){return a.t2<b.t2;}
signed main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d%d",&a[i].t1,&a[i].t2);sort(a+1,a+n+1,cmp);priority_queue<int> q;int dead=-1,cnt=0,sum=0;for(int i=1;i<=n;i++){q.push(a[i].t1);cnt++;sum+=a[i].t1;if(a[i].t2!=dead) dead=a[i].t2;if(sum>dead){sum-=q.top();cnt--;q.pop();}  }cout<<cnt;
}

让我们总结一下,本专题围绕利用优先队列解决贪心选择上的“反悔”(或优化)问题(常用于固定枚举一个基准值)

最后,举个形象的例子:我们的成长就是从一开始的幼稚不断地经历岁月的打磨,见识的增长,不断优化,最终走向成熟。

希望可以和大家一起继续前行!

http://www.lryc.cn/news/293224.html

相关文章:

  • 2023_12蓝桥杯STEMA 考试 Scratch 中级试卷解析
  • 从编程中理解:大脑中的杏仁核
  • Maven dependency中的scope
  • 代码随想录算法训练营DAY11 | 栈与队列 (2)
  • 【Spring实战】33 Spring Boot3 集成 Nacos 配置中心
  • ElementUI安装与使用指南
  • Opencv——图片卷积
  • 项目安全-----加密算法实现
  • 只用一台服务器部署上线(宝塔面板) 前后端+数据库
  • 《Pandas 简易速速上手小册》第8章:Pandas 高级数据分析技巧(2024 最新版)
  • 计算机网络_1.6.2 计算机网络体系结构分层的必要性
  • 跟着cherno手搓游戏引擎【18】抽象Shader、项目小修改
  • 每日OJ题_算法_模拟②_力扣495. 提莫攻击
  • freertos 源码分析二 list链表源码
  • Peter算法小课堂—Dijkstra最短路算法
  • Python 读取和写入包含中文的csv、xlsx、json文件
  • 【算法】利用递归dfs解决二叉树算法题(C++)
  • 计算机网络_1.6.1 常见的三种计算机网络体系结构
  • XML传参方式
  • Pyecharts炫酷散点图构建指南【第50篇—python:炫酷散点图】
  • 关于爬取所有哔哩哔哩、任意图片、所有音乐、的python脚本语言-Edge浏览器插件 全是干货!
  • 压力测试工具-Jmeter使用总结
  • [cmake]CMake Error: Could not create named generator Visual Studio 16 2019解决方法
  • 2024美赛数学建模D题思路分析 - 大湖区水资源问题
  • 2024 高级前端面试题之 HTTP模块 「精选篇」
  • 【Linux C | 网络编程】netstat 命令图文详解 | 查看网络连接、查看路由表、查看统计数据
  • Python爬虫存储库安装
  • 用函数求最小公倍数和最大公约数(c++题解)
  • 鲜花销售|鲜花销售小程序|基于微信小程序的鲜花销售系统设计与实现(源码+数据库+文档)
  • 三.Linux权限管控 1-5.Linux的root用户用户和用户组查看权限控制信息chmod命令chown命令