首页 > 其他分享 >ARC133F FWT 做法

ARC133F FWT 做法

时间:2023-07-13 18:56:04浏览次数:53  
标签:cnt ARC133F sum fwt 数组 FWT 做法 卷积

看见网上题解都是“二维生成函数”,就来传一下这个做法(


问题可以转化为:\(n\) 枚硬币,每次随机翻一枚,求最后正面朝上硬币个数的期望。

把这个过程看作 XOR 卷积,并且需要卷积的两个数组有特性:在 popcount 相同的位置值相同。

这样只要对这种特殊的数组能做 fwt 就做完了。

于是现在要解决如下问题:

  • 数组中每个下标 popcount 相同的数的值是相同的,求出这个东西的 fwt xor 后的数组

设 \(G=\text{FWT}(F)\),\(f_k = \sum_{cnt(s)=k}F_s\),\(g_i = \sum_{cnt(s)=i}G_s\)

fwt xor 的式子是

\[G_{s} = \sum_{t} F_{t}(-1)^{cnt(t\&s)} \]

枚举多少二进制位相交得到

\[g_k = \sum_{i=0}^{n} f_i (1-x)^i(1+x)^{n-i}[x^k] \]

直接分治乘可以做到 \(O(n\log^2n)\)。

还可以推一下:

\[\sum_{i=0}^{n} f_i (x-1)^i((x-1)+2)^{n-i} \]

\[\sum_{i=0}^{n} \sum_{j=0}^{n-i} f_i (x-1)^{i+j}2^{n-i-j}\binom{n-i}{j} \]

对于 \(k=i+j\) 求出

\[h_k = \sum_{i=0}^n f_i \binom{n-i}{k-i} \]

answer =

\[\sum_{k=0}^n h_k2^{n-k}(x-1)^k \]

于是做到了 \(O(n\log n)\)。


另外,这种特殊 FWT 卷积无论是否进行转置做,最终式子是相同的。link

标签:cnt,ARC133F,sum,fwt,数组,FWT,做法,卷积
From: https://www.cnblogs.com/Rainbowsjy/p/17551819.html

相关文章

  • 《Effective C++ 改善程序与设计的55个具体做法》读书笔记
    1.让自己习惯C++条款01视C++为一个语言联邦CObject-OrientedC++TemplateC++STLC++高效编程守则视情况而变化,取决于你使用C++的哪一部分。条款02尽量与const,enum,inline替换#define对于单纯常量,最好以const对象或enums替换#defines。对于形似函数的宏(macros),最好改......
  • FWT小常数枚举方法
    其实是一类要按位变换的问题。不妨假设是二进制的,别的进制类似。voidF(int*a){ for(intw=1;(w<<1)<=(1<<k);w<<=1) for(ints=0;s<(1<<k);s+=(w<<1)) for(intt=0;t<w;++t)a[s+t+w]+=a[s+t];}具体原理未知。......
  • 利用Lucene.net搜索引擎进行多条件搜索的做法
    利用Lucene.net搜索引擎进行多条件搜索的做法1联合两个索引查询,已解决:IndexSearcher[]searchers=newIndexSearcher[2];  searchers[0]=newIndexSearcher(m_indexpath);searchers[1]=newIndexSearcher(m_outindexpath);MultiSearchermultiSearcher=newMult......
  • 在MMORPG中,其他玩家和怪物的同步做法
    1)在MMORPG中,其他玩家和怪物的同步做法​2)AssetBundle通过Offset加密/解密问题3)加载预制体API区别4)关于MaterialPropertyBlock的使用问题这是第340篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。UWA社区主页:c......
  • 一类做法基于变化次数的题目的总结
    最近遇到不少这类题目啊,但自己像个【数据删除】一样完全没有总结经验,被花式吊打。所以痛定思痛,决定总结一下。CF475D.CGCDSSQ我们可以把询问离线下来,求区间\(\gcd\)等于\(x\)的等价于求区间\(\gcd\)不大于\(x\)的减去不大于\(x-1\)的。考虑固定左端点,每次暴力往右拓......
  • Book-Effective C++ 改善程序与设计的55个具体做法
    Book-EffectiveC++改善程序与设计的55个具体做法让自己习惯C++AccustomingYourselftoC++条款01:视C++为一个语言联邦/ViewC++asafederationoflanguages.条款02:尽量以const,enum,inline替换#define/Preferconsts,enums,andinlinesto#defines.条款0......
  • 【题解】Atcoder ABC300 F.More Holidays(线性做法)
    F.MoreHolidays题目描述:给你一个由o和x组成的长度为\(N\)的字符串\(S\),以及整数\(M\)和\(K\)。保证\(S\)至少包含一个x。假设\(T\)是由\(S\)复制\(M\)次而成的长度为\(NM\)的字符串。考虑将\(T\)中的\(K\)个x恰好替换为o。你的目标是在替换后的......
  • 圆弧阳角条详细做法
     这种防磕碰的圆弧怎么做的  1,提前网购好想要的规格,护角条有大圆弧和小圆弧两种  建议大家用这种大圆弧的做出来更大气,效果更明显,  2,用磨光片打磨圆弧的外部,做拉毛处理  因为它的表面比较光滑,不打磨的话后期没法吸住腻子,  3,切掉墙面的直......
  • 【家常】干炸带鱼、小黄鱼做法
    干炸带鱼、小黄鱼做法这才是炸带鱼的正确做法,外酥里嫩,好吃无腥味,方法超简单,美食,菜谱,好看视频预处理1.冷冻带鱼先凉水解冻2.丝刷刷掉鱼鳞,剪刀把鱼鳍剪掉,并掏出内脏后清洗、控干水分3.带鱼改刀并切成小段4.腌制带鱼段大葱段、姜丝、料酒、少许盐、米醋、花椒或白胡椒粉......
  • P2495 [SDOI2011] 消耗战 线段树合并做法
    看到题解里面有一个线段树合并做法!感觉很厉害,但是题解和代码都不是很详细所以补充一下不妨假设\(dp_u\)表示\(u\)及其子树内把所有关键点都切断的最小代价,那么不难有\[\begin{equation}dp_u=\begin{cases}+\infty&u是关键点\\\sum_{v\in\operatorname{son}(u)}\m......