C++刷题篇——05静态扫描

一、题目

二、解题思路

注意:注意理解题目,缓存的前提是先扫描一次

1、使用两个map,两个map的key相同,map1:key为文件标识,value为文件出现的次数;map2:key为文件标识,value为扫描成本

2、使用循环,求每一类文件的两种方式最优解:

min(文件出现的次数 * 文件标识在file_cost中对应的value即扫描成本, 文件标识在file_cost中对应的value即扫描成本 + 缓存价格)

三、代码

#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>

using namespace std;

vector<int>split(string params) {
	vector<int>p;
	while (params.find(" ") != string::npos) {
		int found = params.find(" ");
		p.push_back(stoi(params.substr(0, found)));
		params = params.substr(found + 1);
	}
	p.push_back(stoi(params));
	return p;
}

int main() {
	string m_str;
	getline(cin, m_str);
	int m = stoi(m_str); //缓存需要的金币价格

	string file_ids_str; //文件的标识
	getline(cin, file_ids_str);
	vector<int>file_ids = split(file_ids_str);

	string sizes_str; //文件的大小
	getline(cin, sizes_str);
	vector<int>sizes = split(sizes_str);

	//key为文件标识,value为文件出现的次数
	map<int, int>file_map;
	//key为文件标识,value为文件的扫描成本
	map<int, int>file_cost;

	for (int i = 0; i < file_ids.size(); i++) {
		if (file_map.count(file_ids[i])) { //如果map中存在key为file_ids[i]
			file_map[file_ids[i]] ++; //则key为file_ids[i]对应的value即出现的次数+1
		}
		else {
			file_map[file_ids[i]] = 1; //如果map中不存在key为file_ids[i],则将key放入,value赋值为1
		}

		file_cost[file_ids[i]] = sizes[i]; //一气呵成,将file_ids[i]作为key,文件大小作为value一起对应放进map
	}

	int result = 0;
	for (auto x : file_map) { //遍历文件出现次数的map,两个map的key是一致的
		//min(文件出现的次数 * 文件标识在file_cost中对应的value即扫描成本, 文件标识在file_cost中对应的value即扫描成本 + 缓存价格)
		result += min(x.second * file_cost[x.first], file_cost[x.first] + m);
	}

	cout << result << endl;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试必备docker环境准备

在当今快速发展的软件开发领域&#xff0c;docker作为一种开源的容器化技术&#xff0c;已经成为提高应用部署效率、实现快速、一致的环境配置的重要工具。而性能测试&#xff0c;则是确保软件应用在各种负载和压力条件下表现良好的关键步骤。二者的结合&#xff0c;为软件开发…

基于springboot酒店管理平台

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于酒店管理平台系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了酒店管理平台系统&#xff0c;它彻底改变了过…

手写Spring框架(上)浅出

手写Spring框架 准备工作Spring启动和扫描逻辑实现依赖注入的实现Aware回调模拟实现和初始化机制模拟实现BeanPostProcessor (Bean的后置处理器) 模拟实现Spring AOP 模拟实现 准备工作 准备一个空的工程创建spring的容器类&#xff0c;它是Spring IOC理念的实现&#xff0c;负…

目标检测:数据集划分 XML数据集转YOLO标签

文章目录 1、前言&#xff1a;2、生成对应的类名3、xml转为yolo的label形式4、优化代码5、划分数据集6、画目录树7、目标检测系列文章 1、前言&#xff1a; 本文演示如何划分数据集&#xff0c;以及将VOC标注的xml数据转为YOLO标注的txt格式&#xff0c;且生成classes的txt文件…

web学习笔记(五十一)

目录 1. post请求和get请求的区别 2. CORS 跨域资源共享 2.1 什么是同源 2.2 什么是同源策略 2.3 如何实现跨域资源共享 2.4 使用 cors 中间件解决跨域问题 2.5 JSONP 接口 2.6 实现 JSONP 接口的步骤 1. post请求和get请求的区别 传参方式不同&#xff1a;get请求参数…

NOSQL - Redis的简介、安装、配置和简单操作

目录 一. 知识了解 1. 关系型数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 区别 1.4 非关系型数据库产生背景 1.5 NOSQL 与 SQL的数据记录对比 2. 缓存相关知识 2.1 缓存概念 2.2 系统缓存 2.3 缓存保存位置及分层结构 二 . redis 相关知识 1.…

虚拟机下的Ubuntu系统,NAT网卡连接不上网络的问题

文章目录 解决办法1解决办法2解决办法3Ubuntu20.04桥接网卡和NAT网卡不能同时使用问题解决 本博主花了许久时间解决这个NAT网卡上网问题&#xff0c;如果你试过网上所有教程&#xff0c;检测了Windows环境和Ubuntu环境没问题&#xff0c;无法启动系统服务、ping网络失败、重置虚…

为什么感觉张宇 25 版没 24版讲得好?

很多同学反映&#xff1a;25版&#xff0c;讲得太散了, 知识点太多&#xff0c;脱离了基础班。 三个原因&#xff1a; 1. 25版改动很大&#xff0c;课程没有经过打磨&#xff1b; 2. 因为24考试难度增加&#xff0c;所以改动的总体思路是“拓宽基础”&#xff1a;即把部分强…

这些生活中常用的东西到底要怎么寄?

寄生活中这些常见的“大家伙”&#xff0c;不用发愁啦&#xff01; 看看德邦快递专业包装&#xff0c;如何保驾护航。 01、行李怎么寄&#xff1f; 如果是装有物品的行李箱&#xff1a;1.使用气泡膜包裹物品&#xff0c;轮子部位加强缓冲物防护&#xff1b; 2.放入适配纸箱&am…

Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models笔记 Week01

Natural Language Processing with Attention Models Course Certificate 本文是学习这门课 Natural Language Processing with Attention Models的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Natural Language Processing with Attention ModelsWeek 01…

代码随想录算法训练营第41天 | 343:整数拆分, 96:不同的二叉搜索树

Leetcode - 343&#xff1a;整数拆分 题目&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, …

WinForm_初识_事件_消息提示

文章目录 WinForm开发环境的使用软件部署的架构B/S 架构应用程序C/S 架构应用程序 创建 Windows 应用程序窗口介绍查看设计窗体 Form1.cs 后台代码窗体 Form1.cs窗体的常用属性 事件驱动机制事件的应用事件的测试测试事件的级联响应常用控件的事件事件响应的公共方法 消息提示的…

入门必读!如何实现适老化设计?大广赛题目解析!

早在 2021 年 4 月工业和信息化部办公厅发布了《关于进一步落实互联网应用老化和无障碍改造专项行动的通知》。根据联合国经济和社会事务部发布的2022年世界人口展望报告&#xff0c;全球人口展望报告&#xff0c;全球人口展望报告 65 预计2022年以上人口比例将达到2022年以上年…

2021-08-06

yarn的简介&#xff1a; Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点&#xff1a; 速度超快。 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率&#xff0c;因此安装速度更快。超级安全。 在执行代码…

哈希表(Hash Table) -- 用数组模拟--字符串前缀哈希

本文用于个人算法竞赛学习&#xff0c;仅供参考 目录 一.什么是哈希表 二.哈希函数中的取模映射 三.拉链法&#xff08;数组实现&#xff09; 四.拉链法模板 五.开放寻址法 六.开放寻址法模板 七.字符串前缀哈希 九.字符串前缀哈希 模板 十.题目 一.什么是哈希表 哈希表&…

python print用法

1.输出字符串换行 输出结果会换行&#xff0c;默认自带换行 print(111) print(0) 2.末尾插入字符串或去除换行 末尾只能插入字符串&#xff0c;不能是其他类型 print(111,end0) print(0) 3.变量&#xff0c;字符串混合输入 没有必要什么都学&#xff0c;好用的常用的学一…

基于JavaWeb SSM mybatis 私人健身房系统管理平台设计和实现以及文档报告

基于JavaWeb SSM mybatis 私人健身房系统管理平台设计和实现以及文档报告 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞…

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus&#xff08;ClamAV&#xff09;是免费而且开放源代码的防毒软件&#xff0c;软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行&#xff0c;它不将杀毒作为主要功能&#xff0c;默认只能查出系统内的病毒&#xff0c;但是无法清除。需要用户自行对病毒…

Linux中查看文件内容的命令

文章目录 一、七类常见的Linux的文件二、显示命令三、分页显示四、显示文件前后内容五、压缩、解压缩六、补充 一、七类常见的Linux的文件 字符文件类型-普通文件&#xff0c;包括纯文本文件、二进制文件、各种压缩文件等。在find命令中&#xff0c;type 选项中用 f来表示d目录…

git学习——tags、release、drop commit

最近一直都在持续学习git相关内容&#xff0c;越来越发现git是一个十分适合大型项目和团队协作进行开发的工具&#xff0c;掌握好了对于我们参与项目维护和开发产品帮助很大&#xff0c;所以要不断持续学习git。 tags & releases tag的创建 当我们在git版本控制中遇到了…