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)的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ2818] Gcd (数论,欧拉函数,线性筛)

模板 - 数学 - 数论 - 线性筛

数论入门——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛

数论线性筛质数

数论学习笔记2之杜教筛初探(含例题练习)

算法竞赛模板(数论)