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

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;
}

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

相关文章:

  • Unity AI Navigation自动寻路
  • HarmonyOS实战开发-如何实现一个简单的健康生活应用(上)
  • React中使用antDesign框架
  • Electron安全防护实战:应对常见安全问题及权限控制措施
  • StringBuffer与StringBuilder
  • HCIP综合实验拓扑
  • nuxt学习
  • VS学习建议
  • java汇总区间
  • 【笔记】OpenHarmony设备开发:搭建开发环境(Ubuntu 20.04,VirtualBox 7.0.14)
  • 计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建
  • halcon图像腐蚀
  • neo4j使用详解(六、cypher即时时间函数语法——最全参考)
  • Web 前端性能优化之一:性能模型及网页原理
  • 常用的主流好用的WEB自动化测试工具强烈推荐
  • 分享几个非常不错嵌入式开源项目,一定不要错过
  • Golang基础-4
  • 2024软件设计师备考讲义——UML(统一建模语言)
  • HTML——1.简介、基础、元素
  • Rust 标准库:std::env::args() 函数简介
  • 【Blockchain】GameFi | NFT
  • 【Docker】搭建安全可控的自定义通知推送服务 - Bark
  • 国内IP代理软件电脑版:深入解析与应用指南
  • 面向对象设计之开闭原则
  • 【项目技术介绍篇】若依项目代码文件结构介绍
  • 实现DevOps需要什么?
  • Linux小程序: 手写自己的shell
  • javaSwing租户管理系统
  • cesium实现竖立的圆
  • 汽车电子行业知识:智能汽车电子架构