贪心,CF802B. Heidi and Library

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

Problem - 802A - Codeforces


二、解题报告

1、思路分析

这个题相当于你有一个容量为K的Cache,然后给你一系列访存序列

当访问缺失时你不得不替换掉Cache中某些块

学过操作系统都很熟悉页面置换算法里面有个预言家算法,最佳置换算法

即我们不得不替换时,选择替换掉将来最晚被访问的块,这样能够最大限度下降低缺页率

换到本题,我们不得不扔掉某些书的时候,我们扔掉最晚被借用的书,这样更能够让别的书发挥其作用,降低代价到最低,为什么这样正确呢?我们每次访问无非访问成功或者访问缺失,我们这样最大化了访问成功,自然最小化了访问缺失

2、复杂度

时间复杂度: O(nlogn)空间复杂度:O(n)

3、代码详解

#include <bits/stdc++.h>
using PII = std::pair<int, int>;
using i64 = long long;const int inf = 1e9;void solve() {int N, K, res = 0;std::cin >> N >> K;std::vector<int> a(N);std::map<int, std::vector<int>> pos;std::unordered_set<int> buf;std::priority_queue<PII> pq;for (int i = 0; i < N; i ++ ) std::cin >> a[i];for (int i = N - 1; ~i; i -- ) pos[a[i]].push_back(i);for (int i = 0; i < N; i ++ ) {pos[a[i]].pop_back();if (buf.count(a[i])) {if (pos[a[i]].size()) pq.emplace(pos[a[i]].back(), a[i]);else buf.erase(a[i]);continue;}while (pq.size() && !pos[pq.top().second].size()) pq.pop();if (buf.size() == K) buf.erase(pq.top().second), pq.pop();if (pos[a[i]].size()) buf.insert(a[i]), pq.emplace(pos[a[i]].back(), a[i]);res ++;}std::cout << res;
}int main () {std::ios::sync_with_stdio(false);   std::cin.tie(0);  std::cout.tie(0);int _ = 1;// std::cin >> _;while (_ --)solve();return 0;
}

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

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

相关文章

anaconda怎么运行python

一、在Anaconda Navigator中运行 首先点击菜单栏中的“开始”&#xff0c;在搜索栏中输入“Anaconda”&#xff0c;然后选择“Anaconda Navigator”。 进入主界面&#xff0c;点击“Spyder”中的“Launch”即可。 然后按F5键运行即可。 二、在Anaconda Prompt中运行 也可以在…

Linux - 高级IO

目录 理解五种IO模型非阻塞IO的设置多路转接之select 实现一个简易的select服务器select服务器的优缺点 多路转接之poll 实现一个简易的poll服务器poll服务器的优缺点 多路转接之epoll epoll原理epoll的优势用epoll实现一个简易的echo服务器 epoll的LT和ET工作模式 什么是LT和…

PasteSpider之阿里云OSS功能的设计初衷

前言 在版本v24.6.2.1之后&#xff0c;有一个菜单"OSS配置"&#xff0c;这个配置是干嘛用的呢&#xff1f; 阿里云OSS&#xff0c;或者说云盘&#xff0c;我觉得也可以当CDN使用&#xff0c;比如我们部署了一个网站&#xff0c;为了减少服务器的承载&#xff0c;可以…

数据结构汇总

等同于&#xff1a; 旋转的时候忽略Nil,选装完再加上。

好用的linux链接工具

工具下载链接&#xff1a; FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.3.10,更新日期2023.12.31 - FinalShell官网FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.特色功…

引领未来,ArmSoM-Sige5震撼发布:RK3576芯片搭载,多媒体应用新宠

在数字化浪潮的推动下&#xff0c;ArmSoM-Sige5携手Rockchip RK3576第二代8纳米高性能AIOT平台&#xff0c;以颠覆性的性能和多功能性&#xff0c;成为多媒体应用的新宠儿。这一全新产品不仅拥有6 TOPS算力NPU和最大可配16GB大内存&#xff0c;更支持4K视频编解码&#xff0c;具…

Simulink从0搭建模型10-P11 建模练习 搭建简易车辆动力学模型

Simulink从0搭建模型10-P11 建模练习 搭建简易车辆动力学模型 前言参考1. 车辆纵向动力学模型2. 相关参数定义3. 车辆动力学模型搭建&#xff08;简易&#xff09;3.1. 思路3.2. 模型解析3.2.1. 输入扭矩3.2.2. 滚动阻力 Ff 部分3.2.3. 坡度阻力 Fi 部分3.2.4. 加速阻力 Fj 部分…

2024年比较火的桌面便利贴,适合懒人的电脑便签

在2024年的数字化生活中&#xff0c;高效的电脑便签软件成为了许多“懒人”提升生产力的秘密武器。这些软件不仅让信息记录变得轻松快捷&#xff0c;还能帮助用户有效管理时间&#xff0c;减少遗忘&#xff0c;让桌面保持整洁有序。 其中&#xff0c;“好用便签”以简洁的设计…

哈希重要思想续——布隆过滤器

布隆过滤器 一 概念1.1布隆过滤器的提出2.概念 二 模拟实现2.1 三个仿函数setTest 全代码三 实际应用 一 概念 1.1布隆过滤器的提出 我们在使用新闻客户端看新闻时&#xff0c;它会给我们不停地推荐新的内容&#xff0c;它每次推荐时要去重&#xff0c;去掉那些已经看过的内容…

springboot管理的各依赖版本查看

找一个springboot相关的依赖&#xff0c;比如这里我找mybatis 鼠标点击artifactId名称&#xff0c;图中蓝色字段&#xff0c;跳转到springboot依赖&#xff08;鼠标悬停在上面变成蓝色表示可点击跳转&#xff09;&#xff0c; 点击spring-boot-dependencites&#xff0c;跳转到…

python用tanh画图

用tanh函数画图 圆形 import numpy as np import matplotlib.pyplot as plt# 创建一个二维网格 xx np.linspace(-1, 1, 1000) yy np.linspace(-1, 1, 1000) x_i, y_i np.meshgrid(xx, yy)# 圆的半径和中心 r 0.4 center_x, center_y 0, 0 # 假设圆心在(0, 0)# 计算每个网…

pandas添加行

方法1(df.append()) import pandas as pd# 创建一个空的DataFrame df pd.DataFrame(columns[Column1, Column2])# 新增一行数据 data {Column1: Value1, Column2: Value2} df df.append(data, ignore_indexTrue) print(df)raw_data {"Column1":"adafafa&quo…

OpenEuler 的安装过程记录

一、下载openEuler镜像 1.2 打开官网&#xff0c;选择openEuler23.09 1.3 选择架构、场景以及软件包类型 初次使用的话基本上都是先安装虚拟机&#xff0c;我们大部分主机都是x86_64架构&#xff0c;场景的话就选服务器&#xff0c;软件版类型选择标准版&#xff0c;可以安装图…

【稳定检索/投稿优惠】2024年环境、资源与区域经济发展国际会议(ERRED 2024)

2024 International Conference on Environment, Resources and Regional Economic Development 2024年环境、资源与区域经济发展国际会议 【会议信息】 会议简称&#xff1a;ERRED 2024 大会地点&#xff1a;中国杭州 会议官网&#xff1a;www.icerred.com 会议邮箱&#xff1…

基本元器件 - 二极管

目录 二极管的主要参数 二极管的分类 整流二极管 快恢复二极管&#xff08;FRD&#xff09; 稳压&#xff08;齐纳&#xff09;二级管 瞬态电压抑制器&#xff08;TVS&#xff09; 开关二极管 肖特基二极管&#xff08;SBD&#xff09; 正偏与反偏 常用封装 伏安特性…

第二篇 多路数据选择器

实验二 多路数据选择器 2.1 实验目的 理解多路数据选择器的概念&#xff1b; 使用门级结构描述实现多路选择器&#xff1b; 使用行为描述实现多路选择器&#xff1b; 完成实验设计、仿真&#xff0c;并在DE1-SOC上验证电路。 2.2 原理介绍 在多路数据传送过程中&#xf…

238.除以自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 题目数据保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度内完…

Mac连接U盘后怎么读取 Mac连接U盘后怎么取消只读模式

在使用Mac电脑时&#xff0c;连接U盘是一项常见的需求。无论是传输文件还是备份数据&#xff0c;正确地读取U盘对于Mac用户至关重要。然而&#xff0c;当连接的U盘格式为NTFS时&#xff0c;在Mac中进行数据编辑会遇到一些困难。下面我们来看看Mac连接U盘后怎么读取&#xff0c;…

进程线程(一.2)

进程与线程&#xff08;一&#xff09; 并发编程并发与并行高并发 进程特征什么是进程&#xff1f;线程&#xff1f;进程与程序的区别进程与线程区别进程的五状态进程的种类 查看进程命令ps auxps axjpstreekill 进程的创建fork函数fork总结vfork函数fork与vfork区别 获取进程I…

传输协议TCP-原理部分

传输控制协议TCP&#xff08;Transmission Control Protocol&#xff09;一种基于连接的可靠的稳定的无重复的传输协议。 1、TCP头部信息 TCP协议头部信息如下&#xff1a; 一共占用20个字节 16位源端口号&#xff1a;发送进程的主机端口16位目的端口号&#xff1a;接收主机…