记录编号 418055 评测结果 AAAAAAAAAA
题目名称 棋盘放車 最终得分 100
用户昵称 GravatarRegnig Etalsnart 是否通过 通过
代码语言 C++ 运行时间 0.113 s
提交时间 2017-06-29 09:07:53 内存使用 4.89 MiB
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. #define syy myson
  3. using namespace std;
  4. const int maxn=20;
  5. long long f[1<<maxn],n,temp,m,un[30],cnt[1<<maxn];
  6. long long lowbit(int x)
  7. {
  8. return x&-x;
  9. }
  10. int Main()
  11. {
  12. freopen("examone.in","r",stdin);freopen("examone.out","w",stdout);
  13. scanf("%lld%lld",&n,&m);
  14. for(int i=1;i<=m;i++)
  15. {
  16. int a,b;
  17. scanf("%d%d",&a,&b);
  18. un[a]|=1<<(n-b);
  19. }
  20. temp=(1<<n)-1;
  21. for(long long i=1;i<=temp;i++)
  22. {
  23. cnt[i]+=cnt[i>>1]+(i&1);
  24. }
  25. f[0]=1;
  26. for(long long i=1;i<=temp;i++)
  27. for(long long j=i;j;j-=lowbit(j))
  28. {
  29. long long k=lowbit(j);
  30. if(k&un[cnt[i]])continue;
  31. f[i]+=f[i-k];
  32. }
  33. printf("%lld",f[temp]);
  34. return 0;
  35. }
  36. int main(){;}
  37. int syy=Main();