题目描述: 
有一条很长的队伍,队伍里面一共有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. mysql索引为啥要选择B+树 (上)
  2. ceph monitor----paxos算法1
  3. 一个后端开发人员的node.js学习笔记(一)安装与第一个服务器
  4. python核心编程:web服务器日志分析简单脚本
  5. 网站快速成型_我的老板对快速成型有什么期望?
  6. unity探索者之微信分享回调
  7. 基带传输编码方式HDB3码的快速编码步骤、原理及举例
  8. gg 修改器游戏被保护_GG修改器使用教程
  9. sql 2008 R2 备份和还原
  10. 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
  11. python - 数据类型
  12. 小米电视屏蔽开机广告的方法
  13. 考研政治:马克思主义基本原理
  14. 找了好久的perl在window上读excel的脚本
  15. Java(详解) 1011 A+B 和 C (15 分)
  16. Oracle忘了保存,Oracle Cloud甲骨文云服务器忘记SSH秘钥或未设置Public key的解决办法...
  17. Android开发基础——Kotlin:高阶函数
  18. 智慧停车之 IOT选型-电信物联网
  19. 会员管理小程序实战开发教程-会员信息删除
  20. FPGA突发模式读写DS1302并发送到串口显示

热门文章

  1. 移动通信电磁辐射(转)
  2. 348个实用电路图大全
  3. KVM管理平台选型与开源企业级虚拟化平台oVirt详解
  4. 快速入门JavaScript
  5. mysql的开启审计日志功能
  6. 氟化硼二吡咯BDP581/591-ALK/NH2/COOH/NHS/N3/MAL/DBCO/Hz/Tz/amine衍生物
  7. js中如何把字符串转化为对象
  8. imresize 函数用法
  9. 树图 [ TreeMap ]
  10. Java工程师薪资究竟有多高?