搞不懂的暴搜

2021-10-08 11:28:07 字數 1229 閱讀 5718

暴搜優化.

分析

令第 i 種裝備的數量為sum[i],顯然如果 sum[i]不為 0 那麼這種裝備必選一件,在這時需要考慮的總方案數為 ∏

max(sum[i], 1),其中 ∑sum[i] ≤ 50。最壞情況下所有

sum 的值都相同,令它們都等於 k,則方案數為 kn/k ,當 k 取 3 時取到最大值 3n/3 ,在 n = 50 時

並不算太大,因此可以直接爆搜所有方案得到最優解。

需要注意的是,sum[i] = 0 的部分應該直接跳過,以保證搜尋樹上每一層的節點數至少是上一層的兩倍,使得時間複雜度為 o(3n/3 ),否則會退化成 o(n*3n/3) 而 tle。

#include .h>

#define ll long long

#define t int t;

scanf

("%d"

,&t)

;while

(t--

)using namespace std;

int dx=

;int dy=

;const ll mod =

1e9+7;

const int maxn =

2e5+5;

ll ans =0;

int n,m;

int f[55]

[55][

5];int nxt[55]

;int sum[55]

;void

dfs(int k, int a, int b, int c, int d)

int num = sum[k]

;//如果當前種裝備數量為0,直接搜下一種數量不為0的裝備種類

if(num ==0)

for(int i =

1; i <= num; i ++)}

int main()

k = m +1;

//核心**,記錄下一種數量不為0的裝備是哪種

for(int i = m; i >

0; i --

) ans =0;

dfs(1,

100,

100,

100,

100)

;printf

("%lld\n"

, ans);}

return0;

}

差點搞不懂快排

include include include include include using namespace std const int num 25 這裡預設使用的pivot是a left partition將 a分成兩部分,左邊的部分小於pivot,右邊的部分大於pivot 兩種partiti...

UDPClient 的奇特現象,實在搞不懂

我有個專案,設計了乙個udp服務端。是通過udpclient 的乙個例項 同一埠 提供收發服務。當專案上線測試後,奇怪的現象發生。如果重啟過伺服器的話,伺服器可以執行一段較長時間無異常。但一段時間之後,奇怪的事情來了。1 例如之前有a b c等n個客戶端已經連線到服務端,服務端一直持續為它們 提供服...

搞不懂C語言 指標的意義

以下是c 中的指標用法,c語言的指標除了可以隨意讀取記憶體之外,不知道有啥好處,我把指標比喻成陣列下表。而記憶體就如一條超級大的陣列。我真的越來越 搞不懂指標的意義,處了可以越界有啥好處了。mystruct struct new mystruct mystruct refmystruct ref s...