BZOJ 2734 HNOI2012 集合選數

2022-09-12 00:27:40 字數 1056 閱讀 2965

題意: 給乙個n,求{1~n}的所有滿足以下條件的子集:若 x 在該子集中,則 2x 和 3x 不能在該子集中。

很神奇的一道題,剛開始以為是數學,還想了一下篩法什麼的。。。但是只要稍加思索就會發現,對於乙個元素,

有取與不取兩個狀態,如果用01狀態表示取與不取,就是乙個狀壓dp了,再看一看複雜度,靠譜。

但是怎樣滿足題設條件呢???

表示不會搜了題解,然後發現這題思想神的一逼:

對於乙個數x,構造乙個矩陣

x,3x,9x......

2x,6x,18x......

4x,12x,36x......

notice:陣列計算好,是18*11的,有個同學,開陣列開大了,空間上可以過,但是用memset清零超時了,一定不要多開!!!!!

#include#include

#include

using

namespace

std;

typedef

long

long

ll;const

int mod=1000000001

;bool pd[100001

];int map[20][20],n,s[20],base[20

];ll dp[

20][1

<<11],ans=1ll;

inline

void make(int

x) }

memset(s,

0,sizeof

(s));

for(int i=1;i<=18;i++)

for(int j=1;j<=11;j++)

if(map[i][j]!=0

)

}inline

int dp(int

x)inline

void

solve()

printf(

"%lld

",ans%mod);

}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...