AcWing 1118 分成互質組

2022-04-29 04:51:07 字數 716 閱讀 1346

我用的是狀壓dp。

先預處理出可以在一組的集合。

然後對每種狀態列舉它的子集進行轉移。

像這樣子:

for(i=1;i<(1<\(f[i]\) 表示已經把 \(i\) 集合裡的數安頓好了需要幾個組。

屬性:min

時間複雜度: \(o(n^2 \times 2^n+3^n)\),

其中 \(o(n^2 \times 2^n)\) 是預處理的複雜度,\(o(3^n)\) 是列舉子集的複雜度。

只用 \(22ms\) 就跑完了所有資料!

#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int n=16,s=(1<>n;

for(i=0;i=0;i--)

if(k} if(j==n)

} for(i=1;i<(1

f[i]=min(f[i],f[j]+f[i-j]);

cout

}

1118 數制轉換

1118 數制轉換.cpp 定義控制台應用程式的入口點。題目1118 數制轉換 時間限制 1 秒記憶體限制 32 兆特殊判題 否提交 5215解決 2061 題目描述 求任意兩個不同進製非負整數的轉換 2進製 16進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b...

11 18學習日誌

11.18學習日誌 css1 外部樣式表 2 內部樣式表3 內聯樣式表 綠葉學習網 1 元素選擇器 div 2 id選擇器 id選擇器 box 3 class選擇器 綠葉學習網 綠葉學習網 lv 4 子元素選擇器 father1 div father2 p1 5 相鄰選擇器 相鄰選擇器,就是選中該元...

題目1118 數制轉換

題目描述 求任意兩個不同進製非負整數的轉換 2進製 16進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b,f 或者 0,1,9,a,b,f 輸入 輸入只有一行,包含三個整數a,n,b。a表示其後的n 是a進製整數,b表示欲將a進製整數n轉換成b進製整數。a,b是...