藍橋杯 對局匹配(O n 解法 取巧)

2021-10-19 11:43:53 字數 1202 閱讀 8805

題目描述

第一行包含兩個個整數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思路

思路都在**裡

ac**

#include

#include

using

namespace std;

int a[

100000];

int ans;

void

zero

(int

&num)

intmain()

//如果k==0,也就是說,只有一樣積分的才能匹配,那麼直接輸出去重後的個數即可

if(k ==0)

set<

int>

::iterator it;

//遍歷索引

for(it=next.

begin()

;it!=next.

end(

);it++

)int left = a[i]

;int mid = a[i+k]

;int right = a[i+

2*k]

;//下面的if的意思是:如果a[i],a[i+k],a[i+2*k]都存在,我就去掉a[i+k]和a[i+2*k]+a[i]中的較小者。

if(left!=

0&& mid!=

0&& right!=0)

else

zero

(a[i+k]);

}//下面的else的意思是:如果a[i],a[i+k]存在,a[i+2*k]=0,我就去掉a[i+k]和a[i]中的較小者(這個容易理解)

else

if(left!=

0&& mid!=0)

}}cout<}

對局匹配(藍橋杯)

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

藍橋杯 對局匹配 動態規劃

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

藍橋杯歷屆試題 對局匹配

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