[Codeforces]850E - Random Elections

Posted ditoly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Codeforces]850E - Random Elections相关的知识,希望对你有一定的参考价值。

FWT裸题,写了下模板

#include<cstdio>
#define ll long long
#define r register int
#define MN (1<<20)
#define MOD 1000000007
char s[MN+5];
int n,ans,f[MN+5];
ll a[MN+5];
inline int mod(int x){return x<MOD?x:x-MOD;}
void fwt(int v)
{
    for(r i=0;i<n;++i)for(r j=0,x;j<1<<n;++j)if(x=j^(1<<i),j&(1<<i))
        a[x]=a[x]+a[j],a[j]=(a[x]-a[j]-a[j])/(v?2:1),a[x]/=v?2:1;
}
int main()
{
    scanf("%d%s",&n,s);
    for(r i=0;i<1<<n;++i)a[i]=s[i]-0;fwt(0);
    for(r i=0;i<1<<n;++i)a[i]*=a[i];fwt(1);
    for(r i=f[0]=1;i<1<<n;++i)f[i]=mod(f[i>>1]<<(i&1));
    for(r i=0;i<1<<n;++i)ans=(ans+1LL*a[i]*f[i^((1<<n)-1)])%MOD;
    printf("%d",3LL*ans%MOD);
}

 

以上是关于[Codeforces]850E - Random Elections的主要内容,如果未能解决你的问题,请参考以下文章

Educational Codeforces Round 28 F. Random Query

Codeforces Round #723 (Div. 2) A. Mean Inequality(构造)

B. Random Teams1300 / 组合数学

CodeForces 1B-字符串,进制转换与数学

Codeforces Round 492 (Div.1)

0-1-Tree CodeForces - 1156D (并查集)