分治演算法 化妝晚會

2021-08-29 23:27:20 字數 870 閱讀 2833

萬聖節又到了!farmer john打算帶他的奶牛去參加乙個化裝晚會,但是,fj只做了一套能容下兩頭總長不超過s(1 < = s < = 1,000,000)的牛的恐怖服裝。fj養了n(2 < = n < = 50,000)頭按1…n順序編號的奶牛,編號為i的奶牛的長度為l_i(1 < = l_i < = 1,000,000)。如果兩頭奶牛的總長度不超過s,那麼她們就能穿下這套服裝。

fj想知道,如果他想選擇兩頭不同的奶牛來穿這套衣服,一共有多少種滿足條件的方案。

輸入

輸入檔案的第1行是 2個用空格隔開的整數:n 和 s, 第2…n+1行每行乙個整數:l_i

輸出

1行: 輸出1個整數,表示fj可選擇的所有方案數。注意奶牛順序不同的兩種方案是被視為相同的

輸入樣例

4 6352

1輸出樣例

說明

輸出說明: 4種選擇分別為:奶牛1和奶牛3;奶牛1和奶牛4;奶牛2和奶牛4;奶牛3和 奶牛4。 【資料規模】 對於30%的資料,n<=10000; 對於100%的資料,n<=50000

不因為順序而影響結果,因此排完序後就找到容不下的就break;但是要二分查詢

#includeusing namespace std;

const int n=200005;

int a[n],n,s,ans;

int divide_into_two(int now,int contain)

return hand_left-now;

}int main()

演算法 分治演算法

分治策略主要利用遞迴來解決問題,它包括以下三個步驟 分解 將問題分解為一與原問題類似並且比原問題規模更小的子問題 解決 當分解的子問題足夠小時,直接給出答案,否則用遞迴打方式求解 合併 將子問題的解合成原問題的解 下面考慮乙個簡單的利用分治演算法的歸併排序的例子 問題的形式化描述如下 輸入 a是 乙...

演算法 分治演算法

leetcode 169.多數元素 應用舉例 通過應用舉例分析理解分治演算法的原理其實並不難,但是要想靈活應用並在程式設計中體現這種思想中 卻並不容易。所以,這裡這裡用分治演算法應用在排序的時候的乙個栗子,加深對分治演算法的理解。相關概念 一般通過計算有序對或者逆序對的個數,來表示資料的有序度或逆序...

演算法複習 分治演算法

先來看乙個經典的二分查詢例子。int binarysearch vector nums,int target return 1 時間複雜度是 o logn 我們看到,二分查詢貫徹了分治的思想。當我們要解決乙個輸入規模較大 不妨設為 n 的問題時,可以將這個問題分解成 k 個不同的子集,如果能得到 k...