bzoj2734 HNOI2012 集合選數

2022-08-22 21:36:09 字數 599 閱讀 9335

傳送門:

思路:這題想法比較神,實現卻很簡單

首先注意到「若 x 在該子集中,則 2x 和 3x 不能在該子集中」

然後寫出如下矩陣,其中每個數下面的數是它的2倍,右邊的數是它的3倍,且每個數不超過n

1 3 9 27...

2 6 18 54...

4 12 36 108...

然後再以這個矩陣中沒有出現的最小的數為左上角寫出新的矩陣,直到所有數都被寫入矩陣

這樣問題就轉化為取乙個點,下面和右邊的點不能取,狀壓即可

最後把每個矩陣的答案乘起來即可

#include#include#include#includetypedef long long ll;

const int maxn=100010,maxk=22,mod=1000000001;

using namespace std;

int n,a[maxk][maxk],f[maxk][maxn],lim[maxk],pw[maxk];ll ans=1;bool bo[maxn];

ll query(int x)

return f[18][0];

}int main()

bzoj2734 HNOI2012 集合選數

time limit 10 sec memory limit 128 mb submit 831 solved 487 submit status discuss 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 3x 不能在該子集中。同...

bzoj2734 HNOI2012 集合選數

time limit 10 sec memory limit 128 mb submit 889 solved 523 submit status discuss description 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 ...

bzoj2734 HNOI2012 集合選數

題目鏈結 集合論與圖論 這門課程有一道作業題,要求同學們求出的所有滿足以 下條件的子集 若 x 在該子集中,則 2x 和 3x 不能在該子集中。同學們不喜歡這種具有列舉性 質的題目,於是把它變成了以下問題 對於任意乙個正整數 n 100000,如何求出 的滿足上述約束條件的子集的個數 只需輸出對 1...