Codility上的練習 (14)

2021-06-27 13:14:14 字數 899 閱讀 4795

(1) tieropes

給定n段繩子——乙個正整數陣列,和乙個正整數k,每次只能連線相鄰的兩根繩子,連線好了繩子長度為之前的繩子長度和,並且位置不變,問這麼連線下去,最多能形成多少根長度至少為k的繩子?

資料範圍: n[1..10^5], 陣列元素和k的範圍[1..10^9]。

要求複雜度: 時間o(n), 空間o(1)。

分析: 假設最終扔掉一根繩子,那麼為什麼不把這根繩子連線到它相鄰的繩子上呢? 所以不會扔繩子的…… 於是就線性掃一下 總和 >= k就是一條。。。

// you can also use includes, for example:

// #include int solution(int k, vector&a)

}return r;

}

給定n條線段,每條線段是[a[i],b[i]]的形式(閉區間),線段已經按照結束端點排序了,求最多能選出多少條沒有公共點的線段。

資料範圍 n [0..30000], a, b陣列都是整數,範圍[0..10^9]。

要求複雜度: 時間空間都是o(1)。

分析: 這個就是活動安排問題……而且區間都按右端點排序了,貪心乙個乙個取,相交就扔掉就可以了。

**:

// you can use includes, for example:

// #include // you can write to stdout for debugging purposes, e.g.

// cout << "this is a debug message" << endl;

int solution(vector&a, vector&b)

}return answer;

}

Codility上的練習 (9)

1 countsemiprimes 半質數的定義是恰好兩個質數 可以相同 乘積的數,例如4,6,9,10,14,15,21,22,25,26,都是半質數。給定n,長度為m的等長整數陣列p和q,滿足1 p k q k n,求每個區間 p k q k 之間有多少個半質數。函式頭部 vectorsolut...

Codility上的練習(11)

1 ladder 給定兩個等長的陣列a和b,a i 和b i 表示求乙個有a i 級的梯子,每次上1級或者兩級,上到最高端的方法數對2 b i 取餘數的結果。資料範圍 陣列長度 l 1.30000 a中數字範圍 1.l b中數字範圍 1.30 要求複雜度 時間空間都是o l 分析 打表法 我們迴圈可...

Codility上的練習 (15

1 numbersolitaire 乙個遊戲是從一排n個格仔開始,格仔編號0.n 1,起初,棋子在a 0 每個格仔裡有乙個整數 可能正,可能負 你在格仔i,你扔骰子,得到點數x 1.6 然後走到編號為i x的格仔,如果這個格仔不存在就再投一次骰子,直到i x號格仔存在。你走到n 1號格仔時,遊戲結束...