2个题目都是满分过的。

题目1:

站队

时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

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

每一个警察有一个能力值x,表示他能够监视与他距离不超过x的所有人,小偷被警察发现当且仅当他被一个或多个警察监视到。你知道在整条队伍中,一共有多少个小偷会被警察发现吗?

输入

输入有两行,第一行一个数n(1<=n<=100000),接下来一行有一个长度为n的字符串,依次表示队伍中的每一个人。如果某一位是1-9的某个数字x,表示这一位是一个能力值为x的警察;如果某一位是字符X表示这一位是小偷;如果某一位是字符#表示这是一个普通人。输入保证不会出现其它字符。

样例输入

9

X1X#2X#XX

样例输出

3

Hint

在第一组样例中,一共有9个人,第2位是一个能力值为1的警察,他可以发现位置1,3的两个小偷,第5位是一个能力值为2的警察,他可以发现位置3,6的两个小偷。所以本题中,位置为1,3,6的三个小偷被警察发现了,总个数为3。

这个题目,只需要从头到尾扫描警察,对于每个警察,把他能抓到的小偷标记,注意,不是计数,因为2个警察可能能够抓到同一个小偷。

全部标记之后,再从头到尾扫描被标记的小偷计数,即为答案。

代码:

#include<iostream>
using namespace std;int main()
{int n, ans = 0;char ch[100005];cin >> n;for (int i = 0; i <= n; i++)scanf("%c", &ch[i]);for (int i = 1; i <= n; i++)if (ch[i] >= '1'&&ch[i] <= '9')for (int j = i - (ch[i] - '0'); j <= i + (ch[i] - '0'); j++)if (j > 0 && j <= n&&ch[j] == 'X')ch[j] = 'a';for (int i = 1; i <= n; i++)if (ch[i] == 'a')ans++;cout << ans;return 0;
}

题目2:

终结者C

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

收到情报,有批新造的机器人要运输到前线。小C将去破坏机器人的运输。小C将激光炮放置在公路的一旁,等运输车经过的时候发射(假设激光炮一定可以射穿车辆)。由于能源有限,激光炮只能发射两次。可以认为激光炮放在坐标轴的原点处,并向y轴正方向发射。每辆运输车可以看作是一个矩形,起始的x轴坐标为Xi ,所有的车均位于第一象限,长度为Li,速度为1,朝x轴负方向运动。即经过t时间后,该车车头的x坐标为Xi-t,车尾坐标为Xi-t+Li 。只要打中车的任何一个部分就算击中。

请你算算,他在哪两个时刻发射,才能摧毁最多的运输车。

输入

第一行一个正整数 n ( 2≤N≤200 ),表示运输个的数量。

接下来n行,每行两个整数X和L(1≤X、L≤109),表示一辆车的x轴坐标和长度。

样例输入

4

2 2

3 1

5 2

7 3

样例输出

4

Hint

第一炮在第3秒发射,击中1号和2号运输车,此时1号和2号车身的x坐标范围分别为[-1,1]和[0,1];

第二炮在第7秒发射,击中3号和4号运输车,此时3号和4号车身的x坐标范围分别为[-2,0]和[0,3];

这个题目需要注意的一点是,在n个X中,一定可以选出2个作为激光发射的时间。

这样,只需要枚举n个X即可。

如果只得了70分,那么需要注意下面2种情况。

第一种:

5

1 1

1 3

3 3

4 2

5 1

第二种:

5

1 1

1 2

1 3

3 3

5 1

如果真的是只算对了其中的一种情况,自行思考原因吧。

代码:

#include<iostream>
#include<algorithm>
using namespace std;struct qu
{int s;int e;
};bool cmp(qu q1, qu q2)
{return q1.s < q2.s;
}int main()
{int n, s, e, num, key, ans1 = 0, ans2 = 0, ans = 0;qu q[200];cin >> n;for (int i = 0; i < n; i++){cin >> s >> e;q[i].s = s, q[i].e = s + e;}sort(q, q + n,cmp);for (int i = 0; i < n; i++){num = 1;for (int j = 0; j < i; j++)if (q[j].e >= q[i].s)num++;if (num < ans1)continue;ans1 = num, key = q[i].s, ans2 = 0;for (int i = 0; i < n; i++){if (q[i].s <= key && q[i].e >= key)continue;num = 1;for (int j = 0; j < i; j++)if ((q[j].s>key || q[j].e<key) && q[j].e >= q[i].s)num++;if (ans2 < num)ans2 = num;if (ans < ans1 + ans2)ans = ans1 + ans2;}}cout << ans;return 0;
}

京东2017年4月7日笔试编程原题解析(站队、终结者C)相关推荐

  1. CVTE 2017年07月29日 笔试 C/C++ 编程交流

    第一道编程题是求无序字符数组的第n个最小未出现的正偶数. #include<iostream> #include<algorithm>using namespace std;u ...

  2. 京东发力金融AI,欲再招50位金融AI顶级科学家 转载 2017年12月04日 00:00:00 42 12月1日,京东金融AI实验室在美国硅谷正式投入运营。亦在同一天,京东金融宣布,美国伊利诺伊大

    京东发力金融AI,欲再招50位金融AI顶级科学家 转载 2017年12月04日 00:00:00 42 12月1日,京东金融AI实验室在美国硅谷正式投入运营.亦在同一天,京东金融宣布,美国伊利诺伊大学 ...

  3. 2017广东全国计算机12月,2018年广东考研时间:2017年12月23日至24日

    2018年考研时间已经公布,出国留学考研网为大家提供2018年广东考研时间:2017年12月23日至24日,更多考研资讯请关注我们网站的更新! 2018年广东考研时间:2017年12月23日至24日 ...

  4. 最新手机号段归属地数据库(2017年4月16日版)免费下载

    2017年4月16日版   360569条记录 最新 手机号段数据库 号码归属地数据库  移动号段 联通号段 电信号段 14号段 170号段(虚拟运营商)    权威  全面  准确  规范 字段包括 ...

  5. 数学分析高等代数考研试题荟萃[更新至2017年10月1日]

    数学分析高等代数考研试题荟萃[更新至2017年10月1日], 需要的话见: http://www.followmath.com/forum.php?mod=viewthread&tid=469 ...

  6. 2017年10月31日结束Outlook 2007与Office 365的连接

    2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...

  7. 2017年3月14日上午日志

    2017年3月14日上午复习了高等数学,观看了张宇高等数学第七讲教学视频考研数学命题的新颖性第三种类型逻辑推理题型举反例的方法,积累了更多学习技巧,对线性代数部分的行列式概念有了初步了解,晚上看相应部 ...

  8. python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe

    python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python / 30760 编辑 删除 python pandas dat ...

  9. 2017年度盘点:15个最流行的GitHub机器学习项目 By 机器之心2017年12月21日 15:23 在本文中,作者列出了 2017 年 GitHub 平台上最为热门的知识库,囊括了数据科学、机

    2017年度盘点:15个最流行的GitHub机器学习项目 By 机器之心2017年12月21日 15:23 在本文中,作者列出了 2017 年 GitHub 平台上最为热门的知识库,囊括了数据科学.机 ...

最新文章

  1. 这些年,还是一个人~
  2. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
  3. WebBrowser部分用法
  4. Dubbo的基本介绍和搭建一个Dubbo环境
  5. java文本框输入double,java声明并创建float型数组,double型数组,使用键盘输入的方式给各...
  6. 面试题3二维数组中的查找
  7. Type erroe in tensorflow
  8. PHP网页监控系统,实现网页变化监控
  9. 从 VDN 到 QMIX的学习笔记
  10. linux蓝牙打印机驱动安装失败怎么办,打印机驱动安装失败怎么办?
  11. c语言修改pdf文件内容,PDF怎么编辑修改?如何编辑PDF的内容?
  12. ADCS relay
  13. PDF编辑器哪个好,如何把PDF文件拆分成多个文件
  14. MediaWiki安装插件Semantic MediaWIKI + PageForms
  15. 怎么设置邮箱自动回复?如何设置自动回复功能?
  16. 架构师培训,如何低成本体系性学习? + 最佳实践架构师+自学+老师型:
  17. 关于微信聊天界面更换背景
  18. android rtmp推流,使用MediaCodec和RTMP做直播推流
  19. shell怎样循环遍历字符串数组
  20. 【Anki 牌组+Markdown笔记分享】汇编语言

热门文章

  1. Day07-课程分类管理-课程分类显示前端-p104
  2. Credential Provider
  3. A* 流程+代码详细注释
  4. Linux命令-程序启动
  5. ReSharper配置及用法(转)
  6. 10GBASE-T SFP+电口模块
  7. 从Folly源代码中学习C ++ 11的新功能。
  8. 北航计算机刘强,刘强 LIU Qiang
  9. python数值运算m op n_M OP N数值运算问题
  10. python绘制敏感性和特异性曲线(交叉)