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