藍橋杯 對局匹配 dp基礎 類01揹包

2021-09-13 04:00:15 字數 939 閱讀 3410

積分差恰好是k的兩名使用者會匹配。

如果兩人分差小於或大於k,系統都不會將他們匹配。

**共有n名使用者,以及他們的積分分別是a1, a2, ... an。

但是系統卻一場對局都匹配不起來(任意兩名使用者積分差不等於k)?

類似01揹包的dp

特判k==0的情況,輸出數字的種類

其餘情況把數字放入這個數除以k的餘數對應的堆

對於每一堆內的元素,選這個元素當且僅當不選上乙個元素

所以就是dp[j]=max(dp[j-1],dp[j-2]+cnt[j]),

j代表第j個元素,cnt[j]代表第j個元素的個數

現在學揹包類的dp是不是有點晚

然而我現在最菜的就是dp了

val陣列將數字壓縮到一起,從而模擬vector的寫法

但模擬希爾排序一樣跳躍訪問的寫法也要求會寫,

每次將dp[0]賦初值,迴圈利用dp陣列的寫法,都很值得學習

dp**不長,但大都很考驗思維,雞鴨油!

不會的時候及時看題解,題解裡有很多值得借鑑的寫法,揹著敲就是了

#include#include#include#include#includeusing namespace std;

const int maxn=1e5;

int n,k,v;

int dp[maxn+5],cnt[maxn+5];

int val[maxn+5],num;

int ans;

int main()

else

}for(int i=mx-k+1;i<=mx;++i)

ans+=dp[i];

return ans; }}

int main()

printf("%d\n",solve(k==0));

return 0;

}

對局匹配(藍橋杯)

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

對局匹配 藍橋真題(dp)

問題描述 輸入格式 第一行包含兩個個整數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 樣例輸...

藍橋杯 對局匹配 動態規劃

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