记录编号 | 240888 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 雕塑安置 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.210 s | ||
提交时间 | 2016-03-24 07:03:26 | 内存使用 | 8.31 MiB | ||
#include<cstdio> #include<iostream> using namespace std; long long n,m,f[1048576]={0},p[21]={0},a[21],t,c; int main() { freopen("arrange.in","r",stdin); freopen("arrange.out","w",stdout); scanf("%d%d",&n,&m); p[0]=1; for(int i=1;i<=n;i++) p[i]=p[i-1]*2; for(int i=1;i<=m;i++) { int x,b; scanf("%d%d",&x,&b); a[x]+=p[b-1]; } f[0]=1; for(int i=1;i<p[n];i++) { for(c=0,t=i;t;c++,t-=(t&-t)); for(t=i&~a[c];t;t-=(t&-t)) f[i]+=f[i^(t&-t)]; //cout<<f[i]<<endl; } printf("%lld",f[p[n]-1]); return 0; }