對局匹配(藍橋杯)

2021-10-10 08:34:16 字數 1329 閱讀 5158

小明發現**的自動對局系統在匹配對手時,只會將積分差恰好是k的兩名使用者匹配在一起。如果兩人分差小於或大於k,系統都不會將他們匹配。

現在小明知道這個**總共有n名使用者,以及他們的積分分別是a1, a2, … an。

第一行包含兩個個整數n和k。

第二行包含n個整數a1, a2, … an。

對於30%的資料,1 <= n <= 10

對於100%的資料,1 <= n <= 100000, 0 <= ai <= 100000, 0 <= k <= 100000

乙個整數,代表答案。

樣例輸入:

10 0

1 4 2 8 5 7 1 4 2 8

樣例輸出:

6再比如,

樣例輸入:

10 1

2 1 1 1 1 4 4 3 4 4

樣例輸出:

8資源約定:

峰值記憶體消耗 < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

分析

dp[i] 表示選擇前i個積分能獲得的最大使用者人數,dp方程如下:

#include

#include

using

namespace std;

int n, k;

int ans;

const

int max =

100000+5

;int val[max]

;int dp[max]

;int num[max]

;//不同積分的個數

intmain()

if(k ==0)

}else

dp[0]

= val[0]

;for

(int j =

1; j < m; j++

)else

} ans +

= dp[m -1]

;}} cout << ans << endl;

system

("pause");

return0;

}

藍橋杯 對局匹配 動態規劃

時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入格式 第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000,0 k 100000 輸出格式 乙個整數,代表答案。樣例輸入 10 0...

藍橋杯歷屆試題 對局匹配

問題描述 輸入格式 第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000,0 k 100000 輸出格式 乙個整數,代表答案。樣例輸入 10 0 1 4 2 8 5 7 1 4 2 8 樣例輸...

藍橋杯 對局匹配(O n 解法 取巧)

題目描述 第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000,0 k 100000 輸出 乙個整數,代表答案。樣例輸入 10 0 1 4 2 8 5 7 1 4 2 8 樣例輸出 6思路 思...