XJOI 传送(线性筛数论函数,dp)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XJOI 传送(线性筛数论函数,dp)相关的知识,希望对你有一定的参考价值。
这题就是筛了一个除数函数,没什么好说的
#include<cstdio> #include<cstring> #include<cstdlib> using namespace std; const int N=21,M=1e9+7; char mp[N][N]; int f[1<<20],n,kk,ans,mx; int calc(int x){ int res=0; while (x){ if (x&1) res++; x>>=1; } return res; } int main(){ scanf("%d%d",&n,&kk); for (int i=1; i<=n; i++) scanf("%s",mp[i]+1); mx=(1<<n)-1; f[0]=1; for (int i=1; i<=n; i++) for (int k=mx; k>=0; k--) for (int j=1; j<=n; j++) if (mp[i][j]==‘#‘&&((k>>j-1)&1)==0) f[k|(1<<j-1)]=(f[k|(1<<j-1)]+f[k])%M; for (int k=0; k<=mx; k++) if (calc(k)==kk) ans=(ans+f[k])%M; printf("%d",ans); }
以上是关于XJOI 传送(线性筛数论函数,dp)的主要内容,如果未能解决你的问题,请参考以下文章