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

4259: 残缺的字符串

题意:s,t,星号任意字符,匹配方案数


和上题一样
多乘上一个\(a_{j+i}\)就行了

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=(1<<20)+5;
const double PI=acos(-1);
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}struct meow{double x, y;meow(double a=0, double b=0):x(a), y(b){}
};
meow operator +(meow a, meow b) {return meow(a.x+b.x, a.y+b.y);}
meow operator -(meow a, meow b) {return meow(a.x-b.x, a.y-b.y);}
meow operator *(meow a, meow b) {return meow(a.x*b.x-a.y*b.y, a.x*b.y+a.y*b.x);}
meow conj(meow a) {return meow(a.x, -a.y);}
typedef meow cd;namespace FFT{int n, rev[N];void ini(int lim) {n=1; int k=0;while(n<lim) n<<=1, k++;for(int i=0; i<n; i++) rev[i] = (rev[i>>1]>>1) | ((i&1)<<(k-1));}void dft(cd *a, int flag) {for(int i=0; i<n; i++) if(i<rev[i]) swap(a[i], a[rev[i]]);for(int l=2; l<=n; l<<=1) {int m=l>>1; cd wn = meow(cos(2*PI/l), flag*sin(2*PI/l));for(cd *p=a; p!=a+n; p+=l) {cd w(1, 0);for(int k=0; k<m; k++) {cd t = w*p[k+m];p[k+m] = p[k] - t;p[k] = p[k] + t;w=w*wn;}}}if(flag==-1) for(int i=0; i<n; i++) a[i].x/=n;}
}using FFT::dft; using FFT::ini;int n, m, lim;
cd a[N], b[N], a2[N], b2[N], a3[N], b3[N], c[N];
char s[N], t[N];
int ans, li[N];
int main() {freopen("in","r",stdin);m=read(); n=read(); lim=n+m-1; ini(lim);scanf("%s%s",t,s);for(int i=0; i<n; i++) s[i]= s[i]=='*' ? 0 : s[i]-'a'+1;for(int i=0; i<m; i++) t[i]= t[i]=='*' ? 0 : t[i]-'a'+1;for(int i=0; i<n; i++) a[i].x = s[i], a2[i].x = 2*s[i]*s[i], a3[i].x = s[i]*s[i]*s[i];for(int i=0; i<m; i++) b[m-1-i].x = t[i], b2[m-1-i].x = t[i]*t[i], b3[m-1-i].x = t[i]*t[i]*t[i];dft(a, 1); dft(a2, 1); dft(a3, 1); dft(b, 1); dft(b2, 1); dft(b3, 1);for(int i=0; i<FFT::n; i++) c[i] = a3[i]*b[i] - a2[i]*b2[i] + a[i]*b3[i];dft(c, -1);for(int i=0; i<=n-m; i++) if(floor(c[m-1+i].x+0.5)==0) li[++ans]=i;printf("%d\n",ans);for(int i=1; i<=ans; i++) printf("%d ",li[i]+1);
}

转载于:https://www.cnblogs.com/candy99/p/6648749.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deep learning based multi-scale channel compression feature surface defect detection system

基于深度学习的多尺度通道压缩特征表面缺陷检测系统 Deep learning based multi-scale channel compression feature surface defect detection system 简述&#xff1a;首先应用背景分割和模板匹配技术来定义覆盖目标工件的ROI区域。提取的感兴趣区域被均匀地裁剪成若干个图像…

unix dos mac 文件格式不同导致问题

问题&#xff1a; 运行该脚本出现/bin/sh^M: bad interpreter: No such file or directory 解决&#xff1a; 错误中脚本文件的一个非常可能的原因是DOS格的, 即每一行的行尾以\r\n来标识, 其ASCII码各自是0x0D, 0x0A. 能够有非常多种办法看这个文件是DOS格式的还是UNIX格式…

python中的封装调用_Python基础之封装

一、什么是封装 在程序设计中&#xff0c;封装&#xff08;Encapsulation&#xff09;是对具体对象的一种抽象&#xff0c;即将某些部分隐藏起来&#xff0c;在程序外部看不到&#xff0c;其 含义是其他程序无法调用。 要了解封装&#xff0c;离不开“私有化”&#xff0c;就是…

Multi-scale multi-intensity defect detection in ray image of weld bead

Multi-scale multi-intensity defect detection in ray image of weld bead 焊道射线图像中的多尺度多强度缺陷检测 Abstract The radiographic test used to inspect the internal defects is an important non-destructive testing technique for welding.The weld bead ra…

前端MVC框架之 Angular

一、什么是Angular jQuery&#xff0c;它属于一种类库(一系列函数的集合)&#xff0c;以DOM为驱动核心&#xff1b;而Angular是一种 MVC 的前端框架&#xff0c;则是前端框架&#xff0c;以数据和逻辑为驱动核心&#xff0c;它有着诸多特性&#xff0c;最重要的是&#xff1a;模…

C语言关键字(三)

之前的两篇文章 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;数据类型关键字&#xff09;​zhuanlan.zhihu.com 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;入门篇&#xff09;​zhuanlan.zhihu.com 这篇文件继续讲解C语言关键字 想问大家一个问题&#xff0c…

Review on the Recent Welding Research with Application of CNN-Based Deep Learning

Abstract CNNs enables end-to-end learning with- out feature extraction and in-situ estimation of the process outputs. cnn使端到端学习没有特征提取和现场估计的过程输出。 The papers was classified into 5 groups: four for supervised learning models and one …

python bottle框架 运维_python bottle 框架实战教程:任务管理系统 V_1.0版 | linux系统运维...

经过1-2个星期的开发&#xff0c;现在用任务管理功能&#xff08;添加、删除、修改&#xff0c;详细&#xff09;、项目管理功能&#xff08;添加、删除&#xff0c;修改&#xff0c;详细&#xff09;等&#xff0c;我把现在完成的版本&#xff0c;叫做1.0吧。发布完这个版本后…

[转]你每天90%的注意力被浪费了

[转]你每天90%的注意力被浪费了 最近有一句话很流行&#xff0c;叫做“就怕聪明的人比你还努力&#xff01;”大名鼎鼎的日本寿司之神&#xff0c;小野二郎&#xff0c;有一次记者问他成功的秘诀是什么&#xff0c;小野的答案就两个字“专注”&#xff0c;说自己是把整个生命&a…

Android.mk中添加宏定义

在Boardconfig.mk 中添加一个 IMAGE_FOR_FACTORY_TEST: true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ifdef IMAGE_FOR_FACTORY_TEST LOCAL_CFLAGS -DFACTORY_TEST endif 在Android.mk中添加的这行相当于在 该目录…

Android客制化-恢复出厂设置但保留文件

很久没有记录了&#xff0c;持之以恒做一件事&#xff0c;需要一定的毅力呐&#xff01; 最近遇到了一个需求&#xff0c;要求恢复出厂设置保留内置sd卡下某个目录的文件。思来想去&#xff0c;从驱动那边备份校准信号文件得到了一些思路。因为带通话设置的装置需要进行校准&a…

form 窗体增加边框_C#控件美化之路(13):美化Form窗口(上)

在开发中最重要的就是美化form窗口&#xff0c;在开发中&#xff0c;大多都是用会用自主美化的窗口开发程序。本文只是点多&#xff0c;分为上中下节。分段讲解。本文主要讲解窗口美化关键步骤。首先美化窗体&#xff0c;就需要自己绘制最大化 最小化 关闭按钮。其次就是界面样…

第四周数据结构

转载于:https://www.cnblogs.com/bgd150809329/p/6650255.html

gdb x命令_gdb基本命令

参考自&#xff1a;gdb基本命令(非常详细)_JIWilliams-CSDN博客_gdb命令​blog.csdn.net本文介绍使用gdb调试程序的常用命令。 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试…

cmds在线重定义增加列

--输出信息采用缩排或换行格式化EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, PRETTY, TRUE);--确保每个语句都带分号EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, SQLTERMINATOR, TRUE);--关闭表索引、外键等关联&…

YOLOX-PAI: An Improved YOLOX, Stronger and Faster than YOLOv6

YOLOX-PAI&#xff1a;一种改进的YOLOX&#xff0c;比YOLOv6更强更快 原文&#xff1a;https://arxiv.org/pdf/2208.13040.pdf 代码&#xff1a;https://github.com/alibaba/EasyCV 0.Abstract We develop an all-in-one computer vision toolbox named EasyCV to facilita…

Linux Shell 重定向到文件以当前时间命名

我们经常在编译的时候&#xff0c;需要把编译的过程日志保留下来&#xff0c;这时候这个命令就非常重要了。 make |tee xxx_$(date %y%m%d%H%M%S).txt

安装一直初始化_3D max 软件安装问题大全

纵使3D虐我千百遍&#xff0c;我待3D如初恋&#xff01;大家好&#xff0c;我是小文。快节奏生活的今天&#xff0c;好不容易有点学习的热情&#xff0c;打开电脑学习下&#xff0c;没想到被简单的软件安装问题浇灭&#xff01;这不是耽误了一位伟大的世界设计师诞生的节奏吗&a…

让vim显示空格,及tab字符

1、显示 TAB 键 文件中有 TAB 键的时候&#xff0c;你是看不见的。要把它显示出来&#xff1a; :set list 现在 TAB 键显示为 ^I&#xff0c;而 $显示在每行的结尾&#xff0c;以便你能找到可能会被你忽略的空白字符在哪里。 这样做的一个缺点是在有很多 TAB 的时候看起来很…

TCP/IP 协议栈 -- 编写UDP客户端注意细节

上节我们说到了TCP 客户端编写的主要细节&#xff0c; 本节我们来看一下UDP client的几种情况&#xff0c;测试代码如下&#xff1a; server&#xff1a; #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h>…