藍橋杯 ALGO 997 粘木棍

2022-09-20 22:45:08 字數 1050 閱讀 7724

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

有n根木棍,需要將其貼上成m個長木棍,使得最長的和最短的的差距最小。

輸入格式

第一行兩個整數n,m。

一行n個整數,表示木棍的長度。

輸出格式

一行乙個整數,表示最小的差距

樣例輸入

3 210 20 40

樣例輸出

資料規模和約定

n, m<=7

合併只需要考慮兩個元素的合併,合併後的元素再次加入陣列中,等待下次合併

由n, m知,需要合併的次數為 n - m次,即需要減少的元素個數

資料最大只有7,dfs+無腦for列舉

dfs 的狀態表示的是陣列內的剩餘元素數量,那麼每次合併進入下層,需要u - 1

合併兩個元素後,刪除多餘的元素,我的操作是把它和末尾的元素交換,然後進入下層的時候 u - 1,就跟它說拜拜了。回溯只要交換回來,並把合併元素減去它就行

當某次搜尋結束後,選出最大最小值,不使用排序,因為會打亂順序(複製乙份也行,但沒必要)

#include #include using namespace std;

const int n = 17;

int q[n];

bool st[n];

int n, m, res = 2e9;

void dfs(int u)

res = min(res ,ma - mi);

return;

}for (int i = 0; i < u ; i ++)

for (int j = i + 1 ; j < u; j ++)

}int main()

簡單題,我覺得刪除陣列元素的這個技巧挺有意思的,就想分享一下,反正也沒人看

藍橋杯 ALGO 8(線段樹)

演算法訓練 操作格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 有n個格仔,從左到右放成一排,編號為1 n。共有m次操作,有3種操作型別 1.修改乙個格仔的權值,2.求連續一段格仔權值和,3.求連續一段格仔的最大值。對於每個2 3操作輸出你所求出的結果。輸入格式 第一行2個整數n,m...

藍橋杯 演算法訓練 ALGO12

問題描述 如果乙個序列滿足下面的性質,我們就將它稱為擺動序列 1.序列中的所有數都是不大於k的正整數 2.序列中至少有兩個數。3.序列中的數兩兩不相等 4.如果第i 1個數比第i 2個數大,則第i個數比第i 2個數小 如果第i 1個數比第i 2個數小,則第i個數比第i 2個數大。比如,當k 3時,有...

藍橋杯 ALGO 91 Anagrams問題

演算法訓練 anagrams問題 時間限制 1.0s 記憶體限制 512.0mb 問題描述 anagrams指的是具有如下特性的兩個單詞 在這兩個單詞當中,每乙個英文本母 不區分大小寫 所出現的次數都是相同的。例如,unclear 和 nuclear rimon 和 minor 都是anagrams...