深信服校园招聘c/c 软件开发G卷

时长:120分钟 总分:100分

440浏览 1人已完成答题

题型介绍
题型 填空题
数量 3
1.
序列组装
问题详情

对于长度为n的字符串str[1..n],假设1<=i,j<=n,定义str[1..i]为str的前缀,str[j..n]为str的后缀。
比如str="abcd",则"a"、"ab"、"abc"和"abcd"都是"abcd"的前缀,"d"、"cd"、"bcd"和"abcd"都是"abcd"的后缀。
如果字符串str2的一个前缀刚好是str1的后缀,那么允许这两个字符串拼接,比如Xabc后面可以拼接上abcYZ
得到X[abc]YZ(中括号表示两个串重叠的部分)。现在给定一系列固定长度的字符串,求它们能拼接成的最短字符串。

举个例子,给定两个字符串ATCC和CCTA,它们可以拼接成ATC[C]CTA, AT[CC]TA, CCT[A]TCC,其中最短的字符串长度是6。

复杂度的说明: O(n^2*(2^n+L))可以通过所有数据。 其他的复杂度如果优化得当,也可以得分
时限维持1s
输入描述: 第一行一个正整数T,表示T个测试样例;
对于每个测试样例,
输入正整数n(n<=10)和l(l<=1e4),分别表示字符串个数n,以及字符串的长度l(字符串只包含数字和字母);
接下来n行,输入n个字符串。输入样例: 1 2 4 ATCC CCTA 输出描述: 输出T行,每行一个正整数,表示每个样例能得到的最短拼接长度输出样例 6
2.
序列中位数
问题详情

已知有整数数列a1,a2,a3,a4......an,数列中的整数的数量n为奇数;求数列中的中位数的数值。在求出中位数之后,如果持续的往原来的数列中添加整数(保证添加完成后数量仍为奇数),求出每次添加后新数列的中位数。 输入描述: 第一行代表原始数列,第一个数字为数列的数量n1,第二个数字开始为数列中的整数,一共n1个;

第二行开始是需要添加进数列的整数,该行第一个数字为添加的整数数量n2,第二个数字开始为添加到数列中的整数,一共n2个;

数列的最大数量不超过1,000,000万个输入样例: 3 100 20 1 2 30 100 输出描述: 每行一个输出,表示当前整个序列的中位值输出样例 20 30
3.
黄金时期
问题详情

每个人的职业生涯状态有起有落,程序员也如此。

我们对程序员的状态做一个简化,单纯用缺陷密度来衡量一个程序员一天的状态。如果这一天的缺陷密度比平均值高,则认为他这一天的状态差,高出越多,认为状态越差。比平均值低,则认为状态好,低得越多,认为状态越好。人的状态是可以叠加的,如果两个连续时间段的缺陷密度加起来低于平均值,则认为这两个时间段合起来状态是好的。

给定一个程序员很长一段时间中各个时间片段的缺陷密度(V)与平均值(A)的差值(D=V-A),求出该程序员的黄金时间段的缺陷密度差值D的累加和。
缺陷密度差值D如果为正数,表明缺陷密度高于平均值,如果为负数,表明缺陷密度低于平均值。
所谓黄金时间段,指一个连续时间段,这段时间的缺陷密度与平均值的差值D累加起来,在各种划分方法中,是最小的,也即状态是最好的。

输入描述: 第一行给出一个正整数T,表示一共有T个时间段。(1<=T<10000000)
接下来T行数据,每行数据为一个整数,表示这个时间段缺陷密度与平均值的差值(D)。输入样例: 7 2 -3 -4 1 -3 2 -1 输出描述: 输出黄金时间段内缺陷密度差值D的累加和(已知D不超过32位整数的表达范围)输出样例 -9