思路:

为什么好多字符串的题都可以用FFT啊....

我们其实是要判断$\Sigma (a[i]-b[i])^2*a[i]*b[i]==0$

那就把a串翻转过来 把 上式展开

大力做几遍FFT就好啦~

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define double long double
const double pi=acos(-1);
const int N=666666;
int nn,mm,n,L,R[N],all;
struct Complex{double x,y;Complex(){}Complex(double X,double Y){x=X,y=Y;}
}A[N],B[N],ans[N];
Complex operator+(Complex a,Complex b){return Complex(a.x+b.x,a.y+b.y);}
Complex operator-(Complex a,Complex b){return Complex(a.x-b.x,a.y-b.y);}
Complex operator*(Complex a,Complex b){return Complex(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
Complex operator/(Complex a,int b){return Complex(a.x/b,a.y/b);}
void FFT(Complex *E,int f){for(int i=0;i<n;i++)if(i<R[i])swap(E[i],E[R[i]]);for(int l=1;l<n;l<<=1){Complex wn=Complex(cos(pi/l),f*sin(pi/l));for(int j=0;j<n;j+=(l<<1)){Complex w=Complex(1,0);for(int k=0;k<l;k++,w=w*wn){Complex x=E[j+k],y=w*E[j+k+l];E[j+k]=x+y,E[j+k+l]=x-y;}}}if(!~f)for(int i=0;i<n;i++)E[i]=E[i]/n;
}
char a[N],b[N];
int main(){scanf("%d%d%s%s",&mm,&nn,a,b);for(n=1;n<=mm+nn;n<<=1)L++;for(int i=0;i<n;i++)R[i]=(R[i>>1]>>1)|((i&1)<<(L-1));reverse(a,a+mm);for(int i=0;i<mm;i++)if(a[i]=='*')a[i]=0;else a[i]=a[i]-'a'+1;for(int i=0;i<nn;i++)if(b[i]=='*')b[i]=0;else b[i]=b[i]-'a'+1;for(int i=0;i<mm;i++)A[i].x=a[i];for(int i=0;i<nn;i++)B[i].x=b[i]*b[i]*b[i];FFT(A,1),FFT(B,1);for(int i=0;i<n;i++)ans[i]=A[i]*B[i];for(int i=0;i<n;i++)A[i].x=A[i].y=B[i].x=B[i].y=0;for(int i=0;i<mm;i++)A[i].x=a[i]*a[i]*a[i];for(int i=0;i<nn;i++)B[i].x=b[i];FFT(A,1),FFT(B,1);for(int i=0;i<n;i++)ans[i]=ans[i]+A[i]*B[i];for(int i=0;i<n;i++)A[i].x=A[i].y=B[i].x=B[i].y=0;for(int i=0;i<mm;i++)A[i].x=a[i]*a[i];for(int i=0;i<nn;i++)B[i].x=b[i]*b[i];FFT(A,1),FFT(B,1);for(int i=0;i<n;i++)ans[i]=ans[i]-A[i]*B[i]-A[i]*B[i];FFT(ans,-1);for(int i=mm-1;i<nn;i++)if(fabs(ans[i].x)<1)all++;printf("%d\n",all);for(int i=mm-1;i<nn;i++)if(fabs(ans[i].x)<1)printf("%d ",i-mm+2);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532747.html

BZOJ 4259 FFT相关推荐

  1. BZOJ 4259: 残缺的字符串 [FFT]

    4259: 残缺的字符串 题意:s,t,星号任意字符,匹配方案数 和上题一样 多乘上一个\(a_{j+i}\)就行了 #include <iostream> #include <cs ...

  2. bzoj 2179 FFT快速傅立叶

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 注意进位的时候最好先把所有的都变成 int 再普通进位. #include<io ...

  3. BZOJ 3160 FFT+Manacher

    思路: 这道题思路好奇怪--. 我们先要知道关于x (x可以是间隙) 对称的有几对字母 显然暴力是n^2的 那怎么办呢 先把所有'a'看成1 'b'看成0 意外的发现 这不就是卷积嘛 再倒过来搞一搞 ...

  4. bzoj 2179 FFT快速傅立叶 FFT

    题面 题目传送门 解法 题如其名-- 不妨将多项式的\(x^i\)变成\(10^i\),然后就是一个比较简单的FFT了 md读进来的是一个字符串,并且要倒序 最后注意进位问题 时间复杂度:\(O(n\ ...

  5. 【BZOJ】4259: 残缺的字符串 FFT

    [题意]给定长度为m的匹配串B和长度为n的模板串A,求B在A中出现多少次.字符串仅由小写字母和通配符" * "组成,其中通配符可以充当任意一个字符.n<=3*10^5. [算 ...

  6. BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)

    BZOJ 洛谷 [Update 18.11.5] 晚上没事看了看课本,这不(大部分)是数学选修2-3的内容么..也许没有那么...啊? [Update 19.5] 学了学文化课觉得,这tm不就是数学选 ...

  7. bzoj 3513: [MUTC2013]idiots FFT

    bzoj 3513: [MUTC2013]idiots FFT 链接 bzoj 思路 参考了学姐TRTTG的题解 统计合法方案,最后除以总方案. 合法方案要不好统计,统计不合法方案. \(a+b< ...

  8. BZOJ.3527.[ZJOI2014]力(FFT)

    题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...

  9. 【BZOJ】3527: [Zjoi2014]力(fft+卷积)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 好好的一道模板题,我自己被自己坑了好久.. 首先题目看错.......什么玩意.......首 ...

最新文章

  1. NHibernate 2.0 Beta 1 Released和一些工具
  2. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)
  3. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
  4. 数据库连接类:DatabaseConnection
  5. Bootstrp--一个导航面板切换的实用例子
  6. Smarty的assign定义变量
  7. 小白的算法初识课堂(part4)--快速排序
  8. YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
  9. by group 累加中文字段_EF 求和 GroupBy多个字段
  10. axios+vue+springboot完成批量删除
  11. mysql noinstall 5.5_mysqlnoinstall 手动安装
  12. ubuntu软件包管理
  13. matlab函数 kron
  14. 软件工程标准与软件文档
  15. 机动车合格证手机扫码开票实现方式
  16. echarts网络拓扑图动态流程图
  17. html响应式弹性布局,CSS3响应式布局之弹性盒子
  18. 生物信息学常用名词解释
  19. CINTA:同构,同态与商群
  20. ANDROID 系统下载

热门文章

  1. 如何正确使用AD构造企业的组织架构
  2. Buffer Pool--内存总结1
  3. centos 下载为firefox安装flash插件
  4. Ashby diagram
  5. damage framework can be used by economics
  6. c# typeof 与 Type.GetType 使用与效率对比
  7. vs2010添加TSTCON( ActiveX Control Test Container )工具
  8. 人工智能与大数据的完美结合
  9. Elasticsearch分布式一致性原理剖析(三)-Data篇
  10. PHP实习之路—NO.1(看LINUX、APACHE、MYSQL、PHP文档)