2017第八屆藍橋杯決賽 對局匹配

2021-08-20 05:15:12 字數 1171 閱讀 3269

小明發現**的自動對局系統在匹配對手時,只會將積分差恰好是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 , 不能通過工程設定而省略常用標頭檔案。

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

分析:可以先將所有的數劃分為k組,每組數內部相差k,沒有則為0,不同組選出來的數一定滿足兩兩之差均不為k,那麼現在就是要在每組內部選出盡可能多的數,可以用dp來做,型別01揹包的思想,每組每個數選或者不選,dp[j]表示前j個數滿足兩兩之差均不等於k的最大個數,容易推出狀態轉移方程為dp[j]=max(dp[j-1],dp[j-2]+val[j])。k為0的時候要特判一下。

**:

#include #include #include #include using namespace std;

const int n = 1e5+5;

int dp[n],ct[n],val[n],n,k,num;

int main()

if(k==0) else

}cout<}

return 0;

}

藍橋杯第八屆決賽

精神狀態不好的時候怎麼寫 真的哭了,一堆sb錯誤 對於16進製制,我們使用字母a f來表示10及以上的數字。如法炮製,一直用到字母z,就可以表示36進製。36進製中,a表示10,z表示35,aa表示370 你能算出 many 表示的數字用10進製表示是多少嗎?請提交乙個整數,不要填寫任何多餘的內容 ...

第八屆藍橋杯決賽總結

最後只得了個國三安慰獎,心裡遺憾也不遺憾。省賽結束後就一直沒認真刷過題,國三也是意料之中吧。比賽題目也是中規中矩,只是自己沒好好準備。第一題很簡單的簽到題。第二題其實之前做過很多態別題,dfs,然而由於自己太久沒做題,沒手感沒題感,寫了近乙個小時,還是沒能出結果。第三題 補全題,類似生成樹,前幾屆決...

藍橋杯 2023年第八屆真題 對局匹配

我們可以按照要求將分數分成不同組,同組內的資料相鄰元素差值為k。例如樣例2 10 1 2 1 1 1 1 4 4 3 4 4我們可以分出一組 1,2,3,4 這樣的目的是為了便於選取,因為相鄰元素差值為k,所以我們就可以進行跳躍式選取,也就是如果當前決定第i位的值,我們可以選擇選取第i位,這樣就從第...