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