BZOJ2734 HNOI2012 集合選數

2022-05-12 03:22:55 字數 1424 閱讀 8646

time limit: 10 sec  memory limit: 128 mb

submit: 505  solved: 287

[submit][status]

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

只有一行,其中有乙個正整數 n,30%的資料滿足 n≤20。 

僅包含乙個正整數,表示有多少個滿足上述約束條件 的子集。 4 8

【樣例解釋】

有8 個集合滿足要求,分別是空集,,,,,,,。

day2

題解:不能再神的做法。。。

1 3 9 

2 6 18

。。。。

然後就轉化成了不能選兩個相鄰的數的方案數了。。。狀壓搞定

**:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10 #include11 #include

12#define inf 1000000000

13#define maxn 100000+100

14#define maxm 500+100

15#define eps 1e-10

16#define ll long long

17#define pa pair18

#define mod 1000000001

19using

namespace

std;

20 inline int

read()

2124

while(ch>='

0'&&ch<='9')

25return x*f;26}

27int n,num[20

];28 ll f[20][1

<<12

];29

bool

v[maxn];

30 ll get(int

x)31

44for(int i=0;i<1

4551 x*=2;52

}53 ll t=0;54

for(int i=0;i<1

55return

t;56}57

intmain()

58

view code

upd:我說我的程式怎麼跑得賊慢。。。就因為我每次就memset嗎?。。。

還有乙個就是判斷 i 中是否有兩個連續的1,只要判斷 i&(i<<1)是否為0即可

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