题目来源

  • 华为机试:路灯照明问题

题目描述


题目解析

思路:

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

华为机试:路灯照明问题相关推荐

  1. 【华为机试真题 Python实现】路灯问题【2022 Q1 Q2 |200分】

    文章目录 前言 题目描述 示例 1 示例 2 示例 3 示例 4 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了 ...

  2. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧

    大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...

  3. 华为机试真题分类汇总

    1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...

  4. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  5. 【华为机试 Python实现】华为机试题集合(已更新171篇)

    文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...

  6. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  7. 牛客网--华为机试在线训练10:字符个数统计

    牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...

  8. 牛客网–华为机试在线训练9:提取不重复的数

    牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...

  9. 牛客网–华为机试在线训练8:合并表记录

    牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...

最新文章

  1. Java基础-序列化与反序列化
  2. C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)
  3. cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角
  4. 获取系统信息1——linux系统中的时间
  5. poj 1386 Play on Words(有向图欧拉回路)
  6. Android 11正式版发布!
  7. 叶子结点和分支节点_教你玩转二叉查找树的结点插入操作
  8. 微软 python替代vba_微软将要用Python取代VBA,Python工程师又双叒叕要涨薪了!
  9. 【观点讨论与支撑】明星和成功人士真的就只有成功的一面吗?背后的心酸和痛苦的经历我感觉更重要!
  10. Markdown语法 (中文版)
  11. 创建3层的服务模板 (2)--- App-V package 和 Application Profile
  12. ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
  13. win10动态桌面软件
  14. oracle里面查找重复项,Oracle数据库查询重复数据及删除重复数据方法
  15. Aerospike SSD模式下,刷写磁盘和写入数据swb的关系
  16. 大自然是最广阔的“感统训练室”,端午节带上孩子“趣”玩吧!
  17. apex 查询_在 Apex 中使用合并统计查询
  18. 高斯混合模型(GMM--Gaussian mixture model)
  19. 整理的一些 Vue3 知识点
  20. Url重写问题????

热门文章

  1. 【转】[WebZine]Struts2框架安全缺陷
  2. JS如何判断俩个对象是否相等
  3. android 百度统计可视化埋点,数据埋点的说明及百度统计的使用
  4. 帧中继(FR) CISCO之CCNA篇之十
  5. HG680X 使用 A100 GPU 高负载下带宽由16x降为4x
  6. notepad++使用技巧第7篇---将notepad++添加到打开方式列表中的解决办法
  7. 安全漏洞管理解决方案,代码安全解决,网络安全解决
  8. 全新折叠旗舰OPPO Find N发布
  9. 看看这篇拯救发际线的干货吧--警惕 Go 编程陷阱
  10. 傅里叶变换公式推导(一)