Description

兔子们在玩两个串的游戏。给定两个字符串S和T,兔子们想知道T在S中出现了几次,
分别在哪些位置出现。注意T中可能有“?”字符,这个字符可以匹配任何字符。

Input

两行两个字符串,分别代表S和T

Output

第一行一个正整数k,表示T在S中出现了几次
接下来k行正整数,分别代表T每次在S中出现的开始位置。按照从小到大的顺序输出,S下标从0开始。

Sample Input

bbabaababaaaaabaaaaaaaabaaabbbabaaabbabaabbbbabbbbbbabbaabbbababababbbbbbaaabaaabbbbbaabbbaabbbbabab
a?aba?abba

Sample Output

0

HINT

S 长度不超过 10^5, T 长度不会超过 S。 S 中只包含小写字母, T中只包含小写字母和“?”

Solution

虽然是$FFT$重题,

但$bitset$一波就赢了啊。

Code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<bitset>
 5 #define N (100009)
 6 using namespace std;
 7
 8 char s[N],t[N];
 9 bitset<N>b[26],a;
10
11 int main()
12 {
13     scanf("%s%s",&s,&t);
14     int sl=strlen(s),tl=strlen(t);
15     for (int i=0; i<sl-tl+1; ++i) a[i]=1;
16     for (int i=0; i<sl; ++i)
17         b[s[i]-'a'][i]=1;
18     for (int i=0; i<tl; ++i)
19         if (t[i]!='?') a&=(b[t[i]-'a']>>i);
20     printf("%d\n",a.count());
21     for (int i=0; i<sl; ++i)
22         if (a[i]) printf("%d\n",i);
23 }

转载于:https://www.cnblogs.com/refun/p/10390274.html

BZOJ4503:两个串(bitset)相关推荐

  1. Bzoj4503 两个串

    Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 398  Solved: 190 Description 兔子们在玩两个串的游戏.给定两个字符串S和T ...

  2. BZOJ4503 两个串 【fft】

    题目链接 BZOJ4503 题解 水水题. 和残缺的字符串那题几乎是一样的 同样转化为多项式 同样TLE 同样要手写一下复数才A #include<algorithm> #include& ...

  3. bzoj4503: 两个串

    我又变成sb了 首先通过%可以得到一个这样的柿子: 设s1是模版串,s2是匹配串,j表示模版串以j为起始的子串 fj(0<j<=s1len-s2len) =sigema(i=0~s2len ...

  4. hdu 1867 求两个串的和最小 ,KMP

    题意:       给你两个字符串,让你求str1+str2,就是把1的后面和2的前面重叠的地方只显示一遍就行了 abc + bcd = abcd,要求和的长度最小,和最小的前提下求字典序最小,还有就 ...

  5. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  6. 递归法:求两个串的最大公共子序列的长度

    问题:求两个串的最大公共子序列的长度 举例: 子串: abcgxs 与sabxfh 其最大公共子序列的为abx,长度为3 public class Zixulie {public static int ...

  7. Simpsons’ Hidden Talents(KMP ,两个串的前后缀匹配)

    Simpsons' Hidden Talents 题目 给两个串,求S1的前缀和S2的后缀的最大匹配 思路 拼接两个串,处理出nxt数组,nxt[k] 即为所求,因为它们的最大匹配不能超过原串的长度, ...

  8. 题6:两个串的字符集是否相等

    题目: 只要出现的字符集相同就相等,不在乎数量. 思路: 借助辅助数组,先扫描第一个字符串,将出现的字符转换为辅助数组的下标并标记为1 package 字符串问题;import java.util.H ...

  9. 找出最接近的相似串(DP思想)

    题目:找出最接近的相似串 假设从一个串变化成另一个串所允许的操作只有两种:插入一个字符或者删除一个字符.无论是插入还是删除一个符号,均算作一次操作.一般情况下,度量两个串S1和S2的相似性,可以通过从 ...

最新文章

  1. Android Studio中的代码格式快捷方式
  2. 如何在 Linux 上安装服务器管理软件 Cockpit
  3. scrapy使用笔记
  4. VTK:图片之ImageSlice
  5. 【Ids4实战】分模块保护资源API
  6. Android数据适配-ExpandableListView
  7. webapi控制器怎么接收json_新手指南之 Kubernetes 准入控制器
  8. Spring Boot + Jersey发生FileNotFoundException (No such file or directory)
  9. pandas 做柱状图 显示中文_官方调研重磅发布,Pandas或将重构?
  10. 有道词典笔3新增功能扫读和点读是怎么集成的?
  11. 以下mysql说法正确的是_下面关于 MySQL 的说法中,正确的是_商务统计学答案_学小易找答案...
  12. 物联网技术,主要应用在哪些领域?
  13. Dropping Balls, UVa679
  14. 肿么用photoshop将位图转化成矢量图
  15. 高中OJ3837. 【NOIP2014模拟9.14】心灵终结
  16. Linux操作系统应用
  17. Windows——关于service
  18. c语言书面作业,巢湖学院2011级网络工程1,2班C语言书面作业(江家宝)版
  19. 信息学奥赛一本通提高组2085:【21NOIP提高组】棋局
  20. 操作系统ahci aci ide模式

热门文章

  1. java treemap_Java TreeMap putAll()方法与示例
  2. 缓冲文件系统(fopen/fread/fwrite)和非缓冲文件系统(open/read/write)
  3. 如何在Visual Studio项目中正确添加汇编代码 .
  4. 模拟实现STL中map和set容器
  5. Linux系统编程----7(信号集,信号屏蔽,信号捕捉)
  6. HDU5977-Garden of Eden-树分治+FWT
  7. 运行bat批处理文件不出现黑框
  8. 【C++】int与string转换
  9. 美团Android开发工程师岗位职能要求,真香
  10. c语言 大雨 班上多个同学准备,2015年计算机二级考试《C语言》提高练习题(7)