第八屆藍橋杯(國賽) 對局匹配

2021-10-23 23:12:16 字數 1597 閱讀 2622

問題描述

小明發現**的自動對局系統在匹配對手時,只會將積分差恰好是 k 的兩名使用者匹配在一起。

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

現在小明知道這個**總共有 n 名使用者,以及他們的積分分別是 a1, a2, … an。

輸入格式

第一行包含兩個個整數 n 和 k。

第二行包含n個整數 a1, a2, … an。

輸出格式

乙個整數,代表答案。

樣例輸入1

10 0

1 4 2 8 5 7 1 4 2 8

樣例輸出16

樣例輸入2

10 1

2 1 1 1 1 4 4 3 4 4

樣例輸出28

資料範圍

對於 30% 的資料,1 ≤ n ≤ 10

對於 100% 的資料,1 ≤ n ≤ 105, 0 ≤ ai ≤ 105, 0 ≤ k ≤ 105

題解一

dfs(會超時):藍橋杯官網只過了乙個資料,其它的都超時了?

#include

using

namespace std;

int n, k, ans;

bool st[

100010];

int s[

100010

], a[

100010];

bool

judge

(int u,

int i)

void

dfs(

int u)

return;}

intmain()

ps:然而在dotcpp上能通過全部的資料?

題解二

動態規劃:

以第二個資料2 1 1 1 1 4 4 3 4 4為例,由於 k = 1,所以分成 1 組公差為 1 等差數列。

決策:由於相鄰兩項公差為 k,所以不能選擇相鄰的兩項。

狀態轉移方程:

#include

using

namespace std;

const

int n =

100010

;int n, k, x, ans;

int cnt[n]

, s[n]

, f[n]

;int

main()

if(k ==0)

// k = 0 需要特判

else

ans +

= f[u -1]

;// 加上每組等差數列選擇的最大值}}

cout << ans << endl;

return0;

}

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

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

第八屆藍橋盃國賽 磁磚樣式

題目 小明家的一面裝飾牆原來是 3 10 的小方格。現在手頭有一批剛好能蓋住2個小方格的長方形瓷磚。瓷磚只有兩種顏色 黃色和橙色。小明想知道,對於這麼簡陋的原料,可以貼出多少種不同的花樣來。小明有個小小的強迫症 忍受不了任何2 2的小格仔是同一種顏色。瓷磚不能切割,不能重疊,也不能只鋪一部分。另外,...

藍橋杯第八屆省賽

第4題 6x6的方格,沿著格仔的邊線剪開成兩部分。要求這兩部分的形狀完全相同。如圖 p1.png,p2.png,p3.png 就是可行的分割法。試計算 包括這3種分法在內,一共有多少種不同的分割方法。注意 旋轉對稱的屬於同一種分割法。請提交該整數,不要填寫任何多餘的內容或說明文字。圖的dfs 按照兩...