当前位置: 首页 > news >正文

我想自己做网站吗wordpress过滤用户输入数据库

我想自己做网站吗,wordpress过滤用户输入数据库,wordpress图片设置水印2019,关于卖零食网站建设需求分析目录闲话拿来求什么或与异或闲话 这个比FFT简单了很多呢,,大概是我可以学懂的水平! 好像是叫 快速沃尔什变换 ? 拿来求什么 以 FFT 来类比。我们 FFT 可以在 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的复杂度下实现求解&#xff1…

目录

    • 闲话
    • 拿来求什么
      • 异或

闲话

这个比FFT简单了很多呢,,大概是我可以学懂的水平!

好像是叫 快速沃尔什变换 ?

拿来求什么

以 FFT 来类比。我们 FFT 可以在 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的复杂度下实现求解:

Ck=∑i+j=kAi×BjC_k=\sum_{i + j=k} A_i \times B_j Ck=i+j=kAi×Bj

那么 FWT 的作用就是再 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的时间复杂度下面求解:

Ck=∑i⊕j=kAi×BjC_k=\sum_{i \oplus j=k} A_i \times B_j Ck=ij=kAi×Bj

其中的 ⊕\oplus 是位运算异或的意思。 FWT 应该是支持 ⊕\oplus∣|&\&& 三种位运算的。

然后就准备开始讲这三种位运算分别对应的算法。

我们定义 FWT(A)i=∑j∣i=iAj\mathrm{FWT(A)_i}=\sum_{j|i=i} A_jFWT(A)i=ji=iAj。根据定义可以知道 FWT(A)\mathrm{FWT(A)}FWT(A) 是一个由 AAA 构造出来的多项式。先不管如何构造,我们考虑 FWT(A)\mathrm{FWT(A)}FWT(A) 有什么用。我们发现:

FWT(A)×FWT(B)\mathrm{FWT(A)} \times \mathrm{FWT(B)}FWT(A)×FWT(B)
=∑i=0FWT(A)i×FWT(B)i=\sum_{i=0} \mathrm{FWT(A)_i} \times \mathrm{FWT(B)_i}=i=0FWT(A)i×FWT(B)i
=∑i=0(∑j∣i=iAj×∑k∣i=iBk)=\sum_{i=0} ( \sum_{j|i=i} A_j \times \sum_{k|i=i} B_ k)=i=0(ji=iAj×ki=iBk)

=∑i=0∑(j∣k)∣i=iAj×Bk=\sum_{i=0} \sum_{(j|k)|i=i} A_j \times B_ k=i=0(jk)i=iAj×Bk

=∑i=0∑(j∣k)∣i=iCi=\sum_{i=0} \sum_{(j|k)|i=i} C_i=i=0(jk)i=iCi
=FWT(C)=\mathrm{FWT(C)}=FWT(C)

所以我们发现可以在 O(n)\mathrm{O(n)}O(n) 的时间复杂度下实现由 A,BA,BA,BCCC 的转换。所以现在的问题就是如何在 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 及以下的时间复杂度中求出 FWT(A)\mathrm{FWT(A)}FWT(A)

考虑分治。假设 AAA2n2^n2n 项,那么 A0A_0A0 表示 AAA 的前 2n−12^{n-1}2n1A1A_1A1 表示 AAA 的后 2n−12^{n-1}2n1 项。

然后就可以得到一个崭新的转移:

FWT(A)={FWT(A0),FWT(A1)+FWT(A0)n≥1An=0\mathrm{FWT(A)}=\begin{cases}{\mathrm{FWT(A_0)},\mathrm{FWT(A_1)}+\mathrm{FWT(A_0)}}&{n\geq 1}\\{A}&{n=0}\end{cases}FWT(A)={FWT(A0),FWT(A1)+FWT(A0)An1n=0

这个 ,可以理解成把两个多项式拼起来。

如何理解这个式子呢?n=0n=0n=0 的边界很好理解,问题在上面一个式子。

你考虑 A0A_0A0A1A_1A1 的区别:在 AAA 中且在 A0A_0A0中 的项的下标的最高位一定是 0 ;在 AAA 中且在 A1A_1A1中 的项的下标的最高位一定是 1 ;

所以你发现从 A0A_0A0A1A_1A1AAA 中只有可能是 A0A_0A0 所在的项给 A1A_1A1 所在的项做贡献。

所以就可以做到 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的时间复杂度实现从 AAAFWT(A)\mathrm{FWT(A)}FWT(A) 的转换了。

但是还需要实现从 FWT(A)\mathrm{FWT(A)}FWT(A)AAA 的转换,也就是逆转换。

你感性理解一下,大概就是 A_0 会影响的两个位置,其中一个只有 A_0 ,另一个是 A_0+A_1 ,所以设 x_0 为改变的第一个位置, x_1 为改变的第二个位置,那么有 x=A0x=A_0x=A0y=A0+A1y=A_0+A_1y=A0+A1 。现在是知道了 x 和 y ,所以 A0=xA_0=xA0=xA1=y−A0=y−xA_1=y-A_0=y-xA1=yA0=yx

那么关于 或运算 的 FWT 就可以实现了:

void OR(ll *a,int n,int op){ //op=1是顺转换,op=-1是逆转换for(int mid=1;mid<n;mid<<=1) for(int len=mid<<1,j=0;j<n;j+=len) for(int i=j;i<j+mid;i++)a[i+mid]=(a[i+mid]+a[i]*op+Mod)%Mod;
}

这个和 或 差不多,但是注意到只有 A1A_1A1 可以向 A0A_0A0 贡献,所以反过来。

void AND(ll *a,int n,int op){for(int mid=1;mid<n;mid<<=1) for(int len=mid<<1,j=0;j<n;j+=len) for(int i=j;i<j+mid;i++)a[i]=(a[i]+a[i+mid]*op+Mod)%Mod;
}

异或

这个可能要麻烦一点。

异或本身并不好统一的下标之间的关联。什么意思呢?对于 或 ,我们可以很清楚的发现对于所有情况都是 A0A_0A0A1A_1A1 做贡献;对于 与,所有情况都是 A1A_1A1A0A_0A0 做贡献。但是异或并不满足这样的性质。所以需要考虑一种构造 FWT\mathrm{FWT}FWT 的方式使得 A0A_0A0A1A_1A1 的做贡献方式是一成不变的。

那么考虑怎么找到构造方式。

http://www.yayakq.cn/news/538794/

相关文章:

  • 网站网站建设策划书推广一单500
  • 食品网站建设实施方案不需要付费的网站
  • 高端制作网站公司游戏app拉新平台
  • 网页封装appseo网络推广优势
  • 怎么做网站备案连接wordpress整站克隆
  • 给教育类做网站广告设计用什么软件做
  • 在线做动图的网站产品设计公司怎么接单
  • 海拉尔网站建设+网站设计网站首页大图轮播
  • 网站后台管理系统密码网站开发语言更换
  • 公众号怎么制作流程团购网站优化
  • aspnet网站开发到部署流程做网站开通手机验证功能
  • 广东 网站经营性备案网站开发外文参考文献
  • 除了红动中国还有哪些设计网站海外域名
  • 网站后台 请示我要做一个网站 需要营业范围吗
  • 网站大屏轮播图效果怎么做的平面设计图片 作品集
  • 做装修哪个网站推广好浙江网络安全学院官网
  • 网站页面组成部分建正建设官方网站
  • 在线做六级阅读网站wordpress 首页乱码
  • 贵州城市和城乡建设官方网站dw做的网站如何让别人看看
  • 外链建设都需要带网站网址网站建设服务器
  • 佛山网站优化体验做网站的又营业执照的吗
  • 西宁网站系统建设泸州中泸集团建设有限公司网站
  • 网站开发与设计这么样长沙网站推广系统
  • 河北集团网站建设做收费网站
  • wordpress 修改建站时间网站模版 蓝色
  • 做网站不切片可以吗火脉推广平台
  • 江苏建设造价信息网站app研发流程
  • 企业建站用什么系统开发一款app需要投入多少钱
  • 建筑专业网站建设做一个一般的网站需要多少钱
  • 阿里巴巴1688怎么做网站做个app软件多少钱