藍橋杯 對局匹配 動態規劃

2021-09-12 01:47:27 字數 882 閱讀 2627

時間限制: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

1 4 2 8 5 7 1 4 2 8

樣例輸出

解題思路

把給出的數進行分組,對k取餘餘數相等在一組,因為對k取餘餘數不等的數相差不為k,他們不可能匹配到,只有對k取餘餘數相等的數相差才可能為k。那麼我們只要在每組裡取最多的數,然後把各組的結果加起來即可。

ac**

#include using namespace std;

const int maxn = 1e5+5;

int cnt[maxn],dp[maxn];

bool book[maxn];

int main()

if(k == 0)

cout << sum << endl;

else

sum += dp[j-k];

} cout << sum << endl;

}}

藍橋杯 對局匹配(動態規劃)

小明發現 的自動對局系統在匹配對手時,只會將積分差恰好是k的兩名使用者匹配在一起。如果兩人分差小於或大於k,系統都不會將他們匹配。現在小明知道這個 總共有n名使用者,以及他們的積分分別是a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000...

藍橋杯對局匹配及動態規劃

在這道題目中,我們就需要運用到動態規劃的知識。在我們學習動態規劃前我們或許會用bfs,dfs,遞迴來寫這道題,但是,我們不難發現當我們使用前面三個演算法的時候,我們的時間複雜度會很高。是n n次方,當n是乙個較大的值的時候,我們必然會超時,其中的原因很大是因為我們出現了重疊子問題的現象。而動態規劃就...

對局匹配(藍橋杯)

小明發現 的自動對局系統在匹配對手時,只會將積分差恰好是k的兩名使用者匹配在一起。如果兩人分差小於或大於k,系統都不會將他們匹配。現在小明知道這個 總共有n名使用者,以及他們的積分分別是a1,a2,an。第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 ...