华为机试:路灯照明问题
题目来源
- 华为机试:路灯照明问题
题目描述
题目解析
思路:
(1)将输入处理成一个int数组
(2)根据int数组生成一个区间:{{起始区间,结束区间}, {起始区间,结束区间}…}
(3)合并区间
(4)找哪些区间未被覆盖
实现
#include <iostream>
#include <utility>
#include <vector>
#include <random>
#include <iterator>
#include <map>
#include <algorithm>
#include <set>
#include <bitset>#include <iostream>using namespace std;std::vector<std::vector<int>> generateRange(std::vector<int> &nums){int N = nums.size();// 生成区间std::vector<std::vector<int>> range;for (int i = 0; i < N; ++i) {int loc = i * 100;if(i == 0){range.push_back({loc, std::min(loc + nums[i], (N - 1) * 100)});}else if(i == N - 1){range.push_back({std::max(0, loc - nums[i]), loc});}else{range.push_back({std::max(0, loc - nums[i]), std::min(loc + nums[i], (N - 1) * 100)});}}return range;
}std::vector<std::vector<int>> mergeRange(std::vector<std::vector<int>> &range){std::vector<std::vector<int>> newRange;std::sort(range.begin(), range.end(), [](const std::vector<int> &a, const std::vector<int> &b){return a[0] < b[0] ? true : a[0] == b[0] ? a[1] < b[1] : false ;});newRange.push_back({range[0][0], range[0][1]});for (int i = 1; i < range.size(); ++i) {if(range[i][0] > newRange.back()[1]){newRange.push_back({range[i][0], range[i][1]});}else{newRange.back()[1] = range[i][1];}}return newRange;
}int process(std::vector<int> &nums){int N = nums.size();if(N <= 1){return 0;}auto range = generateRange(nums);auto newRange = mergeRange(range);int notLight = 0;for (int i = 1; i < newRange.size(); ++i) {notLight += newRange[i][0] - newRange[i - 1][1];}return notLight;
}#include <sstream>int main(){while (true){int N ;std::cin >> N;std::vector<int> arr(N);for (int i = 0; i < N; ++i) {std::cin >> arr[i];}int notLight = process(arr);std::cout << notLight << "\n";}
}
华为机试:路灯照明问题相关推荐
- 【华为机试真题 Python实现】路灯问题【2022 Q1 Q2 |200分】
文章目录 前言 题目描述 示例 1 示例 2 示例 3 示例 4 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了 ...
- 【华为机试】死记硬背没思路?一般人我劝你还是算了吧
大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...
- 华为机试真题分类汇总
1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...
- 【华为机试真题 Python实现】2022年4、5月高频机试题
文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...
- 【华为机试 Python实现】华为机试题集合(已更新171篇)
文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...
- [华为机试真题][2014]62.去除重复字符并排序
题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
- 牛客网–华为机试在线训练8:合并表记录
牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...
最新文章
- Java基础-序列化与反序列化
- C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)
- cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角
- 获取系统信息1——linux系统中的时间
- poj 1386 Play on Words(有向图欧拉回路)
- Android 11正式版发布!
- 叶子结点和分支节点_教你玩转二叉查找树的结点插入操作
- 微软 python替代vba_微软将要用Python取代VBA,Python工程师又双叒叕要涨薪了!
- 【观点讨论与支撑】明星和成功人士真的就只有成功的一面吗?背后的心酸和痛苦的经历我感觉更重要!
- Markdown语法 (中文版)
- 创建3层的服务模板 (2)--- App-V package 和 Application Profile
- ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
- win10动态桌面软件
- oracle里面查找重复项,Oracle数据库查询重复数据及删除重复数据方法
- Aerospike SSD模式下,刷写磁盘和写入数据swb的关系
- 大自然是最广阔的“感统训练室”,端午节带上孩子“趣”玩吧!
- apex 查询_在 Apex 中使用合并统计查询
- 高斯混合模型(GMM--Gaussian mixture model)
- 整理的一些 Vue3 知识点
- Url重写问题????