JZOJ3170 挑選玩具

2021-09-19 04:34:15 字數 1308 閱讀 1173

abc找到n個箱子,箱子裡裝著一些玩具,一共有m種玩具,編號從1到m,同一種玩具可能出現在多個箱子裡。

abc決定從中選擇一些箱子,把這些箱子中的玩具聚集到一起,必須保證每種玩具至少出現一次。

問abc一共有多少種選擇方案。

#pragma gcc optimize("o3")

#pragma g++ optimize("o3")

#include

#include

#include

#define maxn 1000005

#define maxm (1<<20)+5

#define mod 1000000007

#define ll long long

#define reg register ll

#define fo(i,a,b) for (reg i=a;i<=b;++i)

#define fd(i,a,b) for (reg i=a;i>=b;--i)

#define o3 __attribute__((optimize("-o3")))

using

namespace std;

ll f[maxm]

,g[maxm]

,pow[maxn]

;ll n,m,max,ans;

o3 inline ll read()

while

('0'

<=ch && ch<=

'9')x=x*

10+ch-

'0',ch=

getchar()

;return x*f;

}o3 inline

void

dfs(ll l,ll r)

ll mid=

(l+r)

>>1;

dfs(l,mid)

,dfs

(mid+

1,r);fo

(i,l,mid)f[i-l+mid+1]

+=f[i];}

o3 int

main()

dfs(

0,max-1)

,pow[0]

=1;fo

(i,1

,n)pow[i]

=pow[i-1]

*2%mod;

g[0]=

1;fo(i,

0,max-1)

printf

("%lld\n"

,(ans%mod+mod)

%mod)

;return0;

}

Jzoj3170 挑選玩具

abc找到n個箱子,箱子裡裝著一些玩具,一共有m種玩具,編號從1到m,同一種玩具可能出現在多個箱子裡。abc決定從中選擇一些箱子,把這些箱子中的玩具聚集到一起,必須保證每種玩具至少出現一次。問abc一共有多少種選擇方案 1 n 1,000,000,1 m 20 第三次看到這個題了,前兩次都忘了怎麼做...

Jzoj3170 挑選玩具

abc找到n個箱子,箱子裡裝著一些玩具,一共有m種玩具,編號從1到m,同一種玩具可能出現在多個箱子裡。abc決定從中選擇一些箱子,把這些箱子中的玩具聚集到一起,必須保證每種玩具至少出現一次。問abc一共有多少種選擇方案 1 n 1,000,000,1 m 20 第三次看到這個題了,前兩次都忘了怎麼做...

JZOJ3170 挑選玩具 分治

有nn 個箱子裝著m m個玩具 乙個玩具可以在多個箱子內 求有多少種選擇箱子的方案使得每種玩具至少有乙個。設f i f i 表示 s1 s i s s 1 s i s 也就是選擇其中一些箱子,會得到乙個玩具集合s s 狀壓後 如果i i完全包含ss,f i f i 就加一。那麼f ma xn 1 i...