2017京东春招实习生招聘编程题
题目描述:
有一条很长的队伍,队伍里面一共有n个人。所有的人分为三类:警察,小偷和普通人。
将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值。
每一个警察有一个能力值x,表示他能够监视与他距离不超过x的所有人,
小偷被警察发现当且仅当他被一个或多个警察监视到。你知道在整条队伍中,一共有多少个小偷会被警察发现吗?
输入:
输入有两行,第一行一个数n(1<=n<=100000),接下来一行有一个长度为n的字符串,依次表示队伍中的每一个人。如果某一位是1-9的某个数字x,
表示这一位是一个能力值为x的警察;如果某一位是字符X表示这一位是小偷;如果某一位是字符#表示这是一个普通人。输入保证不会出现其它字符。
输出:
输出一个数,整条队伍中被警察发现的小偷总数。
样例输入:
9
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京东春招实习生招聘编程题相关推荐
- 2017京东春招C/C++编程题(1)——站队
/*题目描述: 有一条很长的队伍,队伍里面一共有n个人.所有的人分为三类:警察,小偷和普通人. 将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值. 每一个警察有 ...
- 2017网易雷火实习生招聘编程题
题目来源:牛客网https://www.nowcoder.com/profile/7952866/test/7775568/76265 1.字符串编码 给定一个字符串,请你将字符串重新编码,将连续的字 ...
- 网易2019实习生招聘编程题集合
前言 利用周末时间做了这套网易2019实习生招聘编程题,链接如下: 题目链接 成绩 先来看一下博主的成绩,打了67分,完全做对了4道题,另外的4道题中1道题完成了80%,1道题完成了30%.评价一下就 ...
- 网易2019实习生招聘编程题集合 矩形重叠
网易2019实习生招聘编程题 矩形重叠 题目链接:https://www.nowcoder.com/test/9763997/summary [编程题] 矩形重叠 时间限制:1秒 空间限制:32768 ...
- 2017百度实习生招聘编程题
一: 度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同.度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述: 首先输入一个正整数N(N <= 50),接 ...
- 京东2019春招Java工程师编程题题解
生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...
- 京东2018春招java_京东2019春招Java工程师编程题题解
生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...
- 网易2019实习生招聘编程题解答
问题一: 牛牛找工作 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬.牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作.在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛 ...
- 网易2019实习生招聘编程题
**原题链接:**点这儿 网易的题还是有技术含量的,二分和数学和优美暴力考察得较多,这些东西在工作中确实很重要,都是优化程序的方法. # 第一题:牛牛找工作 ## 题目: > 为了找到自己满意的 ...
最新文章
- mysql索引为啥要选择B+树 (上)
- ceph monitor----paxos算法1
- 一个后端开发人员的node.js学习笔记(一)安装与第一个服务器
- python核心编程:web服务器日志分析简单脚本
- 网站快速成型_我的老板对快速成型有什么期望?
- unity探索者之微信分享回调
- 基带传输编码方式HDB3码的快速编码步骤、原理及举例
- gg 修改器游戏被保护_GG修改器使用教程
- sql 2008 R2 备份和还原
- 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
- python - 数据类型
- 小米电视屏蔽开机广告的方法
- 考研政治:马克思主义基本原理
- 找了好久的perl在window上读excel的脚本
- Java(详解) 1011 A+B 和 C (15 分)
- Oracle忘了保存,Oracle Cloud甲骨文云服务器忘记SSH秘钥或未设置Public key的解决办法...
- Android开发基础——Kotlin:高阶函数
- 智慧停车之 IOT选型-电信物联网
- 会员管理小程序实战开发教程-会员信息删除
- FPGA突发模式读写DS1302并发送到串口显示