首页 > 代码库 > indeed2017校招在线编程题(网测)三
indeed2017校招在线编程题(网测)三
A. Calculate Sequence
分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写。
B. 忘了叫啥了。
就是有a-j十个字符组成的字符串,要求去掉一些字符,使得剩下的长度大于k,且这些满足要求里面的字符串字典序最小的。然后需要枚举删除的字符串,2^10 = 1024,字符长度最大值100,所以复杂度为1024*100,在1s的时限内完全可以,直接编写。
C. Anagram Multiple Number
这题好像更简单哎,求一个数的倍数,而且长度和包含的字符完全一致,然后长度一致,那就只有2-9倍的数字满足要求,然后判断一下是否相同字符,这个数最大9999999,完全int就足够了,直接写。
D. Construct Permutation
先读懂题意,(这些题虽然都是英文的,但是描述都很短,看例子也很容易理解),就是某些位置不能放置某些数字,数据范围maxn = 100,时限是2s,用dfs一个一个序列检查合法性肯定是不行的,因为100!,这个复杂度实在是太高了,然后考虑有没有一种规则性的放法,使得按照这个规则放置以后都是满足要求的,我没有想到这个放法,(后来听师姐说可以),然后我就考虑每个位置只能放一个数,而且一定存在解,我猜是不是最大流最小割可以做,然后就画了画,应该可以。就是一个数字可以放到任一位置,这些边上的流量为1,除去输入中的不能放置的情况,然后添加源点到每个数字一条边,这些边上的流量也是1,然后添加汇点,每个位置到汇点的流量也是1,然后运行最大流算法,我从网上找了一个dinic的模板,其他算法应该也可以,由于最后一定存在解,也就是最大流一定是n,就是数字的个数,然后寻找数字的放置的位置,就是该数字发出的边中流量由1变为0的边,另一端的顶点就是最后的位置。最后计算复杂度,顶点个数100*2 + 2 = 202,dinic复杂度 202 * (202 * (202 + 1) / 2) = 8e6, 打答案的复杂度是100 * 100,在2s的时限内,完全可以。
代码先不贴了。
indeed2017校招在线编程题(网测)三