内存管理(ybtoj-二叉堆)

文章目录

  • 题目描述
  • 解析
  • 代码

题目描述

在这里插入图片描述

解析

这题感觉做的不错
不难看出,要维护一个空闲的优先队列,在每次申请时弹出编号最小的

但是对判断当前哪些被访问的内存重新进入空闲状态是一个难题
最简单的办法是存起来每次扫一遍判断
但这样在极端数据时会TLE(题解里那个和数据构造者斗智斗勇的写法就邪门)
那么怎么办呢?

很容易想到也用一个优先队列维护
但问题是在访问时内存到期时间会后延
而优先队列是不支持这一点的
但我们想到:
干脆不管原先在占用队列里的那个内存了
直接再往里push一个新的
然后用num数组记录每个内存在占用队列里出现的次数
每次弹出时–;
然后当num=0时才是空闲的

写但这里本题已经过了
但是我们又发现:占用队列其实一定是先进先出的
那还优先个球啊
直接队列就行了
不过由于空闲队列还是优先队列
所以时间复杂度还是nlogn
只是常数小了一点
在这里插入图片描述
多少快了点

AC

代码

#include<bits/stdc++.h>
using namespace std;
const int N=3e6+100;
#define ll long long
int n;
int x,y,t;
char s;
struct node{int id,t;bool operator < (const node y)const{return t>y.t;}
};
priority_queue<int,vector<int>,greater<int> >fre;
queue<node>cpu;
int num[N];
int main(){for(int i=1;i<=30000;i++) fre.push(i);while(scanf("%d %c",&t,&s)!=EOF){while(!cpu.empty()&&cpu.front().t<=t){int o=cpu.front().id;cpu.pop();if(--num[o]==0) fre.push(o); }
//		scanf(" %c ",&s);
//		printf("%c\n",&s);if(s=='+'){int now=fre.top();fre.pop();printf("%d\n",now);num[now]++;cpu.push((node){now,t+600});}else{scanf("%d",&x);if(x>30000) printf("-\n");else{if(num[x]){printf("+\n");num[x]++;cpu.push((node){x,t+600});}else{printf("-\n");}}}}return 0;
}
/*
1 +
1 +
1 +
2 . 2
2 . 3
3 . 30000
601 . 1
601 . 2
602 . 3
602 +
602 +
1202 . 2
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4233-射命丸文的笔记【NTT,多项式求逆】

正题 题目链接:https://www.luogu.com.cn/problem/P4233 题目大意 随机选择一条有哈密顿回路的nnn个点的竞赛图&#xff0c;求选出图的哈密顿回路的期望个数。 对于每个n∈[1,N]n\in[1,N]n∈[1,N]求答案。 1≤N≤1051\leq N\leq 10^51≤N≤105 解题思路 竟然自己推出来了泪…

HDU 5008 Boring String Problem ( 后缀数组求本质不同第k大子串)

Boring String Problem Zeronera题解 预处理sum数组记录不同字符串的个数&#xff0c;即sum[i] n- sa[i] 1 -height[i] sum[i-1] (n为原串长度) 对于每个k 若k > sum[n] 则输出0 0 &#xff0c;即k大于不同子串的总数 否则&#xff0c;二分sum数组找到第k小子串所在的…

HAPPY_TOGETHER_WEEK15_ENJOY

文章目录7-1 6翻了7-2 幸运彩票7-3 点赞7-4 猜数字7-5 出租7-6 A-B7-7 连续因子7-8 天梯赛座位分配7-9 大笨钟7-10 敲笨钟7-11 整除光棍7-1 6翻了 #include<iostream> #include<string> using namespace std; int main() {string str;int s;int count 0;getline(…

[翻译]初试C# 8.0

原文地址: https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/初试C# 8.0昨天我们宣布了Visual Studio 2019的第一个预览版&#xff08;使用Visual Studio 2019提高每个开发人员的工作效率&#xff09;和.NET Core 3.0&#xff08;宣布.NET Core 3预览…

上帝造题的七分钟(ybtoj-树状数组)

文章目录题目描述解析代码thanks for reading&#xff01;题目描述 解析 差点活活恶心死 搬砖题 &#xff08;其实细节没有那么多&#xff0c;还是代码能力太差&#xff09; 利用矩阵的二维差分 加上树状数组搞一搞 就完事了&#xff08;我实在不想再写了 &#xff09; 洛谷…

ACM模板合集

目录数据结构STL以及基础数据结构并查集线段树树状数组平衡树树套树可并堆\sqrt{}​根号数据结构LCT字符串字符串匹配字符串其他数学数论线性代数组合数学网络流最大流最小割费用流图搜索最短路负环最短路建图最小生成树连通性相关欧拉路径二分图树上问题其他离线分治算法随机化…

P6657-[模板]LGV 引理

正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出nnn\times nnn的棋盘&#xff0c;mmm个起点第iii个为(1,ai)(1,a_i)(1,ai​)&#xff0c;对应mmm个终点第iii个为(n,bi)(n,b_i)(n,bi​)。 求有多少条选出mmm条四联通路径的方案使得没有路径有交点。 2≤…

STL初步讲解

文章目录sortmapvectorstackqueuepriority_queue初学C&#xff0c;发现经常在文件中有using namespace std这个东西。首先 namespace 这个东西叫做命名空间。using有好几种用法&#xff0c;这里使用的是using的命名空间的使用。 std是C中的一个命名空间&#xff0c;叫做标准命名…

.NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

最近一段时间有些事情耽搁了更新&#xff0c;抱歉各位了。上一篇我们简单的介绍了DotNetty通信框架&#xff0c;并简单的介绍了基于DotNetty实现了回路&#xff08;Echo&#xff09;通信过程。我们来回忆一下上一个项目的整个流程&#xff1a;当服务端启动后&#xff0c;绑定并…

洛谷:P1831 杠杆数(数位dp)

文章目录描述解析代码thanks for reading&#xff01;传送门描述 如果把一个数的某一位当成支点&#xff0c;且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和&#xff0c;那么这个数就可以被叫成杠杆数。 比如4139就是杠杆数&#xff0c;把3当成支点&#xff0c…

2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解

前言 找大佬嫖到个号来划水打比赛了&#xff0c;有的题没写或者不是我写的就不放了。 目前只有&#xff1a;1004,1005,1007,1008,1011 正题 题目链接:https://acm.hdu.edu.cn/contests/contest_show.php?cid990 1004 Link with Balls 题目大意 两种盒子各有nnn个&#xff…

Visual Studio 2019 首个预览版本抢先看,有啥新功能?

微软在 Connect 2018 大会上发布Visual Studio 2019 第 1 个预览版本。该预览版本中展示了许多变更&#xff0c;从 IDE 的启动行为&#xff0c;到代码重构功能&#xff1b;从搜索功能的更多用法&#xff0c;到更好的大型项目导航。这个预览版本展现了微软希望尽全力帮助开发人员…

模板:网络流(Dinic算法)

文章目录1.网络最大流题目描述解析反悔边分层&#xff08;避免环流&#xff09;时间优化代码2.费用流描述解析代码1.网络最大流 洛谷P3376 题目描述 给出一个网络图&#xff0c;以及其源点和汇点&#xff0c;求出其网络最大流。 解析 网络流的思想就是在原有的基础上不断进…

NC51272 棋盘覆盖

题目&#xff1a; 给出一张nn(n≤100) 的国际象棋棋盘&#xff0c;其中被删除了一些点&#xff0c;问可以使用多少1*2的多米 诺骨牌进行掩盖。 题解&#xff1a; 先进行黑白染色&#xff0c;相邻的两个黑白就是一个骨牌&#xff0c;又因为一个格子不能放多个骨牌&#xff0c;…

P5494-[模板]线段树分裂

正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合ppp中在[l,r][l,r][l,r]的数放到一个新的集合中将集合ttt的所有数放入集合ppp中在集合ppp中放入xxx个ppp查询集合ppp中在[l,r][l,r][l,r]区间的数查询集合ppp中第kkk小的数 …

暑期训练待补

2021牛客暑期多校训练营5 C-Cheating and Stealing 繁琐 F-Finding Points 计算几何 I-Interval Queries 回滚莫队链表 2021牛客暑期多校训练营6 D-Gambling Monster FWT G-Hasse Diagram min25筛 2021牛客暑期多校训练营7 A-xay loves connected graphs多项式&#xff1f…

微软推出 VS Code 新特性,为 TypeScript 和 JavaScript 用户提供 AI 辅助开发功能

除了开发人员非常喜欢的IntelliSense和代码完成之外&#xff0c;今年早些时候&#xff0c;微软还发布了IntelliCode&#xff0c;提供了一组 AI 辅助开发功能。VS Code 团队现在宣布了一项新的实验性扩展&#xff0c;将 IntelliCode 带给了 TypeScript 和 JavaScript 用户。VS C…

NC107617 poj3020 Antenna Placement

问题&#xff1a; n * m的矩阵&#xff0c;有一些障碍点&#xff0c;用12的骨牌覆盖所有非障碍点 (12骨牌可重叠&#xff0c;骨牌可越界&#xff0c;骨牌可延伸到障碍点) 问最少需要 多少个。 题解&#xff1a; • 尽量用一个骨牌覆盖两个格子&#xff0c;覆盖不了了再重叠使…

P7737-[NOI2021]庆典【tarjan,虚树】

正题 题目链接:https://www.luogu.com.cn/problem/P7737 题目大意 给出一张无向图满足若x⇒z,y⇒zx\Rightarrow z,y\Rightarrow zx⇒z,y⇒z那么有x⇒yx\Rightarrow yx⇒y或y⇒xy\Rightarrow xy⇒x。 qqq次询问给出起点和终点和kkk条临时的边&#xff0c;求可能经过点的数量 1…

货车运输(洛谷P1967)(倍增)

传送门 文章目录题目描述题目解析代码题目描述 题目解析 本题如果告诉你&#xff0c;城市形成了一棵树&#xff0c;是不是就迎刃而解了呢? 本题的关键就是把稠密图转化为一片森林&#xff08;就是可能有很多棵树啦&#xff09; 怎么转化呢? 考虑哪些边是没用的 如果AB已经可…