Codility上的问题 (16) Omicron 2012】的更多相关文章

这是我目前最喜欢的codiltiy上的问题之一.问题描述是:给定一个整数数组A,所有的数均不相同.假设下标从0开始,找到一个数组B, 满足A[B[0]] > A[B[1]] > A[B[2]] >...A[B[K]],对任意两项A[B[i]]和A[B[i + 1]],任意j,  min(B[i],B[i + 1]) < j < max(B[i],B[i + 1]) 均有A[j] < A[B[i + 1]] ,求最大的K. 例如,对数组 A, A[0] = 9 A[1]…
进入2012年的题 codility上的题目开始变难,变得有意思起来.给定两个长度在[1..300000]的只包含0和1的串S和T,它们是2进制表示的,S表示的数A不大于T表示的数B,即A<=B,且A > 0.还有一个参数是K, 1<=K<=30,问[A..B]之间有多少个数满足它们的2进制表示任意两个1之间至少有个0.(如果一个数2进制表示只有1个1,认为它是满足条件的). 结果 对  1000000007取模. 要求复杂度:时间空间都是O(log(A +B)) 分析: 我们求[…
codility上面添加了教程.目前只有lesson 1,讲复杂度的……里面有几个题, 目前感觉题库的题简单. tasks: Frog-Jmp: 一只青蛙,要从X跳到Y或者大于等于Y的地方,每次跳的距离为D,问至少跳几次. X,Y,D都是[1..10^9]的整数. 要求时间空间复杂度O(1). 这个题比较简单,就是做除法嘛,我们不知道X是否已经不小于Y了,我加了个判断,不过也就一句话. 代码: // you can also use includes, for example: // #incl…
比较无聊的题,求斐波那契数的第N^M项. f(0) = 0, f(1) = 1, f(n) = f(n - 1) + f(n - 2),结果对10000103取模. N, M在[0..10^7]之间.要求复杂度:时间O(log(N * M)),空间O(1). 分析: fib数取模有周期,并且对质数的周期一定是从最开头开始.也就在对P取模下,一定有f(T) == f(0).关于周期的求法有原根之类的方法……但是本题直接暴力就行.算得 T = 20000208.后面就是矩阵乘方了. 代码: // y…
题目: 像最大直方图一样给定一个数组是每个单位长度上的高度,求至少几个矩形可以拼出这个形状. 例如:给出的数组 H[0] = 8 H[1] = 8 H[2] = 5 H[3] = 7 H[4] = 9 H[5] = 8 H[6] = 7 H[7] = 4 H[8] = 8 因为可以用如上的7块可以达到要求. 输入范围: n [1..10^5] 数组种每个元素 [1..10^9] 要求复杂度 时间 空间都为O(n). 分析: 这个问题实际上叫做skyline problem.初步想想挺复杂,其实一…
从正整数1开始,产生一个数列,数列中的每个数是之前出现过的任意两个数的和(可以相等),问产生正整数A,需要的数列长度至少是多少?返回这样一个最短的序列. 例如A=42 可以这样[1, 2, 3, 6, 12, 24, 30, 42],也可以[1, 2, 4, 5, 8, 16, 21, 42],后者是最短的.A不大于600. 分析: 本题没规定时间.空间复杂度.因为本题只能暴力搜索,但是一般的实现会超时,需要一些剪枝.首先保证数列严格单增.另外,我们用迭代加深dfs做的时候,注意看一下剩余的长度…
这个题也比较有意思.意思是给定一个数组A,长度为M,里面都是正整数,代表每块地形的高度.现在要测试一种加农炮,给定一个炮弹的高度H, 如果存在最小的I,满足0 < I <  M,满足A[I] >= H,则炮弹会被挡住,于是A[I - 1]的高度会增加1.如果H <= A[0],则这个炮弹无效,如果H > 所有的A[I],这个炮弹也无效.现在再给定N个整数的数组B代表炮弹高度,计算出最后地形的样子. 数据范围: M和N的范围[0..30000] A和B中元素的高度[0..10^…
这个题比较简单,给定一个整数数组,对每个元素,求出和它最近比它大的数的距离(下标绝对值),如果没有比它大的数,认为距离是0. 数组元素个数 N [0..50000],数组元素范围[-10^9, +10^9]. 要求复杂度 时间 空间 都是O(N). 分析: 这个题比较简单吧.跟直方图最大矩形差不多,类似于求左右边界.求左边界的话记住,有这个数在的话,比它更早的并且比它小的数都没有意义(因为有这个数存在,而它又很大,右边的数往左找的话会先选择这个数).于是栈内元素是单调递减的,求右边界类似. 代码…
codility出了lesson 5了. (1) 合法括号序列,包括( [ { ) ] }这6种字符的字符串,长度N在[0..200000]范围内,为其是否合法. 要求时间复杂度O(N),空间复杂度O(N). 用堆栈简单判断就可以了. // you can also use includes, for example: // #include <algorithm> #include <stack> int solution(const string &S) { // wr…
1 准备系统安装U盘 使用常见的光盘工具软件ultraISO. (1)首先使用UltraISO打开Ubuntu-16.04.4-desktop-amd64.iso安装映像. (2)在菜单栏中,选择"启动"=>"写入硬盘映像",成功创建安装U盘. 2 使用U盘安装Ubuntu 16.04 (1)启动XPS13,按"F2"键进入BIOS界面,将硬盘模式设置为ACHI,并去掉并禁止Secure Boot. (2)使用安装U盘,正常安装Ubuntu…