首页 > 其他分享 >高维前缀和

高维前缀和

时间:2023-01-29 20:55:51浏览次数:31  
标签:前缀 int 可以 枚举 贴个 高维

普通求前缀和,是容斥意义下去做的

而如果我们用这种思路带向高维,则其复杂度是\(O(n2^d)\,\,\,d\)是维数 的

高维前缀和可以做到 \(O(nd)\)

具体方法就是对每一位分别做前缀和,然后再拼起来就可以了

画个图

大概……就是这样吧

这个东西可以代替一部分的枚举子集,好像还能优化 DP ,但我还没见到过,见到了再写

代码也挺好写的,两层循环,外面枚举现在到了第几维了,里面进行前缀和就可以了

贴个二进制下的板子

for(int j = 0; j < n; j++) 
    for(int i = 0; i < 1 << n; i++)
        if(i >> j & 1) f[i] += f[i ^ (1 << j)];

其实主要是因为今天要写FMT和FWT才现学的这玩意儿

标签:前缀,int,可以,枚举,贴个,高维
From: https://www.cnblogs.com/Benzenesir/p/17073795.html

相关文章