藍橋杯 18省賽 A9 倍數問題 倒序dfs

2021-10-09 01:27:04 字數 1093 閱讀 9356

【題目描述】

眾所周知,小蔥同學擅長計算,尤其擅長計算乙個數是否是另外乙個數的倍數。但小蔥只擅長兩個數的情況,當有很多個數之後就會比較苦惱。現在小蔥給了你 n 個數,希望你從這 n 個數中找到三個數,使得這三個數的和是 k 的倍數,且這個和最大。資料保證一定有解。

【輸入格式】

從標準輸入讀入資料。

第一行包括 2 個正整數 n, k。

第二行 n 個正整數,代表給定的 n 個數。

【輸出格式】

輸出到標準輸出。

輸出一行乙個整數代表所求的和。

【樣例輸入】

4 31 2 3 4

【樣例輸出】

9【樣例解釋】

選擇2、3、4。

【資料約定】

對於 30% 的資料,n <= 100。

對於 60% 的資料,n <= 1000。

對於另外 20% 的資料,k <= 10。

對於 100% 的資料,1 <= n <= 10^5, 1 <= k <= 10^3,給定的 n 個數均不超過 10^8。

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

思路:取最大值->從後往前窮舉dfs

不確定輸出是否正序,->arrays.sort()快排一波

public

class

main

private

static

boolean

dfs(

int index ,

int sum ,

int lev)

return

false;}

for(

int i =index ;i >=

0;i --)if

(dfs

(i -

1,sum +a[i]

,lev +1)

)return

true

;return

false;}

private

static

void

init()

}

藍橋杯 16省賽 A9 交換瓶子 找閉環

交換瓶子 有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正...

藍橋杯 18省賽 B9 全球變暖 佇列

你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被淹...

第六屆藍橋杯省賽C C B組(倒序)

在x森林裡,上帝建立了生命之樹。他給每棵樹的每個節點 葉子也稱為乙個節點 上,都標了乙個整數,代表這個點的和諧值。上帝要在這棵樹內選出乙個非空節點集 s,使得對於 s 中的任意兩個點 a,b,都存在乙個點列 使得這個點列中的每個點都是 s 裡面的元素,且序列中相鄰兩個點間有一條邊相連。在這個前提下,...