题目描述: 
有一条很长的队伍,队伍里面一共有n个人。所有的人分为三类:警察,小偷和普通人。 
将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值。 
每一个警察有一个能力值x,表示他能够监视与他距离不超过x的所有人, 
小偷被警察发现当且仅当他被一个或多个警察监视到。你知道在整条队伍中,一共有多少个小偷会被警察发现吗?
输入: 
输入有两行,第一行一个数n(1<=n<=100000),接下来一行有一个长度为n的字符串,依次表示队伍中的每一个人。如果某一位是1-9的某个数字x, 
表示这一位是一个能力值为x的警察;如果某一位是字符X表示这一位是小偷;如果某一位是字符#表示这是一个普通人。输入保证不会出现其它字符。
输出: 
输出一个数,整条队伍中被警察发现的小偷总数。
样例输入: 

X1X#2X#XX
样例输出: 
3
思路:从头到尾扫描整个字符串,设置一个range变量表示当前位置的最大警力值,每扫描一个字符则range--,若当前字符代表小偷,则保存在thief容器里;若是警察,则更新当前的最大警力值range,然后从thief容器依次删除在该警力范围的小偷。最终遍历完这个字符串的时候,thief容器里保存了所有不能被警察抓到的小偷在字符串中的索引,由于只遍历了一次字符串,而thief容器最多只压入个索引,最多也只删除n个索引,所以时间复杂度仍然为O(n)。
#include <iostream>
#include <cmath>
#include <vector>
#include <stack>
#include <string>
#include <algorithm>
#include <set>
using namespace std;int main()
{int n;string str;cin >> n >> str;vector<int> thief; //记录小偷的位置int range = -1; //记录警力在当前位置的能力值int nb_thief = 0; //记录小偷的数量for(int i = 0; i < str.size(); i++){if(str[i] == 'X'){nb_thief++;if (range < 0) thief.push_back(i);}else if(str[i] != '#'){int police = str[i] - '0';range = max(range, police);while(!thief.empty()){//在警力范围内,则删除if(range >= i - thief.back())thief.pop_back();else break;}}range--;//每次走一步,最大警力范围值-1}cout << nb_thief - thief.size() << endl;
}

2017京东春招实习生招聘编程题相关推荐

  1. 2017京东春招C/C++编程题(1)——站队

    /*题目描述: 有一条很长的队伍,队伍里面一共有n个人.所有的人分为三类:警察,小偷和普通人. 将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值. 每一个警察有 ...

  2. 2017网易雷火实习生招聘编程题

    题目来源:牛客网https://www.nowcoder.com/profile/7952866/test/7775568/76265 1.字符串编码 给定一个字符串,请你将字符串重新编码,将连续的字 ...

  3. 网易2019实习生招聘编程题集合

    前言 利用周末时间做了这套网易2019实习生招聘编程题,链接如下: 题目链接 成绩 先来看一下博主的成绩,打了67分,完全做对了4道题,另外的4道题中1道题完成了80%,1道题完成了30%.评价一下就 ...

  4. 网易2019实习生招聘编程题集合 矩形重叠

    网易2019实习生招聘编程题 矩形重叠 题目链接:https://www.nowcoder.com/test/9763997/summary [编程题] 矩形重叠 时间限制:1秒 空间限制:32768 ...

  5. 2017百度实习生招聘编程题

    一: 度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同.度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?  输入描述: 首先输入一个正整数N(N <= 50),接 ...

  6. 京东2019春招Java工程师编程题题解

    生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...

  7. 京东2018春招java_京东2019春招Java工程师编程题题解

    生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...

  8. 网易2019实习生招聘编程题解答

    问题一: 牛牛找工作 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛 ...

  9. 网易2019实习生招聘编程题

    **原题链接:**点这儿 网易的题还是有技术含量的,二分和数学和优美暴力考察得较多,这些东西在工作中确实很重要,都是优化程序的方法. # 第一题:牛牛找工作 ## 题目: > 为了找到自己满意的 ...

最新文章

  1. correlation 蒙特卡洛_蒙特卡洛模拟法及其Matlab案例
  2. 微信链接里的图像如何得到更清晰
  3. Qt creator工程项目移植时因环境变换造成qmake错误的解决方案
  4. 《解释的工具:生活中的经济学原理 读书笔记6》
  5. Qt5.15.2+VS2019安装小结
  6. Ubuntu开放指定端口
  7. Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
  8. 奇妙的安全旅行之国密算法
  9. Mac双网卡路由设置实现内外网同时访问
  10. 系统分析师成长之路 转
  11. 使用U盘制作启动盘重装mac系统
  12. 博奥导出工程项目电子表格_博奥造价软件导出excel表格无数据原因-2015年基础教育年报导出的电子表格没有数据,什么原因?...
  13. 全民投资人游戏服务器维护,欢乐园《全民仙战》2月3日14时合服公告
  14. 阿泰,水晶报表--掌控对象
  15. 青春对白,邮寄我的时光
  16. Android APP升级时解析程序包时出现问题
  17. pytorch深度学习入门笔记
  18. 比较火的NFT数字艺术品交易平台
  19. SimpleDateFormat api
  20. HDFS命令:hdfs dfs

热门文章

  1. mysql修改表前缀操作步骤
  2. 【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)
  3. YOLO系列(V1-V2-V3)
  4. 超简单的 VIM 练级攻略
  5. Vue 组件传值通信、父子组件、爷孙组件传值、方法调用
  6. CentOS7 Failed to start LSB: Bring up/down networking.解决方法
  7. 漫画:程序员调bug的真实写照233
  8. 基于STM32的智能小车方案设计
  9. 微信小程序输入框input
  10. HDU 2544 最短路 最短路入门