秋招笔试编程题(之一)

1、现给定n支蜡烛线性排列在某一维坐标系上,从左往右第i支蜡烛的坐标为xi,保证x1

输入描述:输入包含两行,第一行含有两个正整数n,K,其中1<=n<=10^5,1<=K<=n;第二行包含n个整数x1,x2,...,xn,其中-10^8<=xi<=10^8。

输出描述:输出仅包含一行,输出点燃K支蜡烛所需要的最小时间。

示例

输入

5 3

-30 -10 10 20 50

输出

40

说明:5支蜡烛,要点燃其中的3支,现在在0位置处,先左移到-10处点燃蜡烛x2,再右移到10和20处点燃蜡烛x3,x4,一共移动了40个单位长度,共40秒。

2、公司中总是有非常多的设备,对每台设备编号可以使我们更加方便地管理设备。在一次审查中发现,有些设备共享同一编号,有些设备编号超出所在编号区间。我们必须马上解决这些问题。你必须从1~n中选择数字按升序地进行编号,同时由于更改设备编号需要花费很多时间,所以已经满足要求的编号无需更改。(对于重复的编号,保留第一次出现的那台设备编号,务必保证更改的那些编号保持升序)现给你n台设备编号,要求对这n台设备按如上要求重新编号。

输入描述:输入包含两行,第一行为设备台数n,其中1<=n<=10^5;第二行包含n个正整数a1,a2,...,an表示当前设备编号,其中1<=a1<=10^5。

输出描述:输出包含一行,输出重新编号后的n台设备编号。

示例

输入

15

2 2 1 2 1 2 3 3 1 3 2 1 2 3 2

输出

2 4 1 5 6 7 3 8 9 10 11 12 13 14 15

说明:要保证编号范围为1~n,并且更改的编号要保持升序。

3、[深信服]JSON中某个子节点的位置可以JSON路径的形式表示,JSON路径类似UNIX文件路径,以‘/’分隔父子节点名。JSON路径中不会出现空格。如下JSON值中

mem -- daemons --findme

    |          |- waccd

    |

    |- apps -- appd

findme子节点的JSON路径为:/mem/daemons/findme

appd子节点的JSON路径为:/mem/apps/appd

waccd子节点的JSON路径为:/mem/daemons/waccd

有一个列表用来描述各JSON子节点是否允许用户编辑。如下:

Y /mem/daemons/findme

N /mem/daemons

Y /mem

如果有设置用户对某个子节点的权限,则实际权限为该设定权限,否则继承其父节点的可访问性,对根节点的默认访问权限为N。

输入描述:第一行为一个正整数N,表示接下来有N行数据(0

输出描述:输出“权限”,权限表示该节点的实际访问权限。

示例

输入

1

/mem/total

3

Y /mem/daemons/findme

N /mem/daemons

Y /mem

输出

Y

4、[VMWare][心爱的纪念品]花花看中了一件非常中意的纪念品,售价m,而她手里有n种纸币,第i种纸币每张币值为Ai,总共有Bi张。然而呢,花花是个极其懒的人,她希望从包里抽出尽量少的纸币去支付这样纪念品,而且她懒得思考,所以想让作为男朋友的你来解决这个简单的问题。

输入描述:第一行两个证书,n和m。(1<=n<=100,1<=m<=10^8)  第二行n个正整数,第i个数表示第i种纸币的面值。(1<=Ai<=10000)  第三行n个正整数,第i个数表示第i种纸币的数量。(1<=Bi<=100)

输出描述:一个正整数,表示所需的最少的纸币张数,保证花花有足够的钱可以购买这件纪念品。

示例

输入

3 100

10 20 50

1 10 1

输出

4

说明:1张50,2张20,1张10块。

5、[VMWare][还能拖多久]西西是一个十足的拖延症患者,再过一段时间他就要期末考试了,但他不想复习,还想拖延下去,今天是Y年M月D日,A月B日就是考试日期,他想知道还有多少天。

输入描述:第一行一个数T,表示数据组数。(1<=T<=100)接下来T行,共5个正整数,Y,M,D,A,B,保证为合法日期,且(M,D)不等于(A,B),即肯定不会为同一天。(1<=Y<=10000)

输出描述:共T行,每行一个整数,如果A月B日在M月D日的前面,则输出Y年M月D日到Y+1年A月B日还有几天,否则输出Y年M月D日到Y年A月B日还有几天。

示例

输入

5

2016 1 2 1 31

2016 12 30 1 15

2017 7 1 9 1

2018 6 6 5 5

2019 5 1 4 30

输出

29

16

62

333

365

6、[注册系统]一种新的邮件服务即将启用,这种新的邮件服务的注册系统将由你来完成。注册系统必须遵循以下的规则。每一次,如果一个新用户想要注册,他向系统发送他的用户名usemame(只由小写字母组成)。如栗这个用户名不存在于系数据库中,那么系统就会把这个用户名插入数据库,并且给新用户返回一个“OK”,表示注册成功;如栗这个用户名已经存在于数据库中,那么系统就会自动生成一个新的用户名,把它插入到数据库中,并且把这个新用户名返回给用户,新的用户名生成规则如下,在已经存在用户名usename之后追加数字1,2,3,•••(usename1,usename2,usename3),每次都是寻找最小的没有用过的数字进行追加(从1开始)。现在给出n个用户的注册请求,请输出每次系统返回的字符串。
输入描述
第一行一个整数n,表示注册请求的个数。
接下来n行,每行一个字符串,表示用户名,全部由小写字母组成。
满足1<=n<=10^5,每个字符串的长度不超过32。

输出描述

n行,每行是”OK“,或者是系统产生的新的用户名。

示例

输入

3

ab

abc

ab

输出

OK

OK

ab1

你可能感兴趣的:(C/C++)