歷屆試題 對局匹配

2021-10-21 04:19:21 字數 1409 閱讀 9927

提交此題

評測記錄

資源限制

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

樣例輸出

藍橋杯還真一題變乙個演算法啊,開始用dfs()深搜,只能過乙個測試,後面就算不出來了。又補了dp演算法,看了好幾篇文章才寫出來了。

組與組之間的分數肯定不能匹配

組內相鄰分數可以匹配,相間分數不可匹配

是。 most_p = most_p[n-2] + val[j] 前 j 個分數最大人數 = 前 j-2 個分數最大人數 + 第 j 個分數的人數

否。 most_p = most_p[n-1] 前 j 個分數最大人數 = 前 j-1 個分數最大人數

由此得dp狀態轉移方程:

d p[

i]=m

ax(d

p[i−

2]+v

al[i

],dp

[i−1

])

dp[i]=max(dp[i−2]+val[i],dp[i−1])

dp[i]=

max(

dp[i

−2]+

val[

i],d

p[i−

1])

#include

#include

using

namespace std;

typedef

long

long ll;

const

int maxp =

100005

;int score[maxp]

, n, k, max_score =

-0x3f3f3f3f

, temp, ans =

0, val[maxp]

, most_p[maxp]

;vector<

int> vs;

voiddp(

)//從0-(k-1)開始進行分組(是score%k的一系列值)。沒必要用else,因為k=0進入不了分組迴圈

for(

int i =

0; i < k; i++)}

intmain()

dp();

cout << ans;

return0;

}

歷屆試題 對局匹配

這幾天心態有點崩,不會的忒多了,翻翻學長們的部落格,同時期的他們學的演算法比我多,題量也是!而且我很多學的演算法和資料結構都只是做過模板題。md下學期逃課吧,我愛acm!萬幸今天下午查機組考得還算可以hhhh,算是一件值得高興的事呢。如果對於給定的k為0,那麼我們讓每乙個積分為x的組的人數都只剩乙個...

試題 歷屆試題 對局匹配

小明發現 的自動對局系統在匹配對手時,只會將積分差恰好是k的兩名使用者匹配在一起。如果兩人分差小於或大於k,系統都不會將他們匹配。現在小明知道這個 總共有n名使用者,以及他們的積分分別是a1,a2,an。include include using namespace std const int ma...

歷屆試題 對局匹配 遞推

題目鏈結藍橋杯 歷屆真題 題解 問題描述 輸入格式 第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000,0 k 100000 輸出格式 乙個整數,代表答案。分析 每積分相乘k個能匹配,則將每...