题面

题目背景

大名鼎鼎的 OI 天花板选手 JZM 对自己的好伙伴——印象笔记有些生疏了

题目描述

作为一名 OI 选手,他的笔记中的字母只包含数字0和1。
JZM 在印象笔记中找到了一行 NNN 个字母的印象语录,而 JZM 打算朗读一段长度为 MMM 的话语。由于 JZM 记得不是很清楚,他需要从印象语录的某一个位置开始,对照着印象语录进行朗读。当印象语录上的当前字符和 JZM 话语中即将朗读的字符不一样时,JZM 就会跳过这对不一样的字符继续朗读下一个位置,我们称之为发生一次停顿。JZM 所要朗读的话语有些段落文辞优美,有些段落儒雅随和。具体地,该话语中第 iii 个字符有优美度 fif_ifi​,如果在第 iii 个字符上发生停顿,JZM 的容忍度就会减少 fif_ifi​ 。JZM 的初始容忍度为 KKK,当他的容忍度降至 0 以下时,JZM 就不想继续朗读了。

例如,印象语录为 1101110,而 JZM 则打算从第 3 个字符开始对照,朗读 110011,K=1K=1K=1,f={1,1,4,5,1,3}f=\{1,1,4,5,1,3\}f={1,1,4,5,1,3} 。

过程中,印象语录的第三个字符 0 与 JZM 所要朗读的第一字符 1 不同,于是他发生了一次停顿,容忍度减少 1 。

之后,语录中的第四个字符 1 和话语的第二个字符 1 相同,顺利朗读,进入下一对。

印象语录的第五个字符 1 与 JZM 所要朗读的第三个字符 0 不同,于是他又发生了一次停顿,容忍度减少 4,变为 -4,于是 JZM 停下了朗读。

我们把 JZM 停下朗读时当前进行到印象语录中字符的位置称为终止位置,上面这个例子中, JZM 的终止位置为 5 。特别地,假如 JZM 从第 iii 个位置开始顺利朗读完了 MMM 个字符,他的终止位置是 i+Mi+Mi+M;假如读到一半印象语录结束了,他的终止位置是 N+1N+1N+1 。

JZM 此时要断章取义,他想尽可能顺利地朗读话语,于是身为 OI 领头羊的他把这个小任务交了你,希望你能告诉他,对于每一个可能的朗读起始位置 1 到 N ,他的终止位置会是哪里。

输入格式

第一行三个整数 NMKN\;M\;KNMK 表示印象语录的长度,JZM 朗读话语的长度和 JZM 的容忍度。
第二行 NNN 个 0/10/10/1 字符,为印象语录。
第三行 MMM 个 0/10/10/1 字符,为 JZM 朗读的话语。
第三行 MMM 个整数,为话语中每一个字符的优美度。

输出格式

输出一行 NNN 个整数,第 iii 个整数表示对于朗读起始位置 iii ,JZM 的终止位置会是哪里。

Sample Input

20 10 15
10011111001101010110
1011110101
2 1 4 7 4 8 3 6 4 7

Sample Output

11 12 13 13 11 13 17 15 19 15 20 18 20 21 21 21 21 21 21 21

数据范围

对于测试点1: N,M≤103N,M \leq 10^3N,M≤103
对于测试点2~3: K=0K=0K=0
对于测试点4 : K≤100K\leq 100K≤100
对于测试点5~6:话语中所有字符均为 1
对于测试点7~10 : 无特殊限制
对于所有的数据,1≤N,M≤105,0≤K≤108,1≤fi≤1031\leq N,M\leq 10^5\;,\;0\leq K\leq 10^8\;,\;1\leq f_i\leq10^31≤N,M≤105,0≤K≤108,1≤fi​≤103
时间限制 2 s,空间限制 64 MB。

题解

考试中,我正敲着 K ≤ 100 的部分分,调试着后缀数组+ RMQ 的百行大代码,忽然听见对面的大佬们在小声讨论:
\;\;\;\;“你用的是 FFT 还是 NTT ? 我觉得 FFT 可能有点慢。
NTT ? 哪一到题?T1 跟 NTT 有什么关系?
\;\;\;\;“你开的块大小是多少?我开了 3000
分块?・∀・?怎么又跟分块扯上关系了?
罢了罢了,肯定不是这道题。
于是我就打了前面四个点的暴力,相比起他们的 AC,我只拿了 50 pts(多了十分?看下文)

如果限定终止位置在哪里,我们就可以想想怎么快速地算容忍度会降多少,是否降到 0 以下。
设话语为 S 字符串 ,印象语录为 T 字符串 ,ansians_iansi​ 代表第 iii 个位置开始匹配完整个字符串 S 后消耗的容忍度,则:
ansi=∑j=1m(S[i+j−1]xorT[j])⋅fjans_i=\sum_{j=1}^{m}(S[i+j-1]\,xor\,T[j])\cdot f_jansi​=j=1∑m​(S[i+j−1]xorT[j])⋅fj​

这是笔者进行的基础的题面翻译,大佬们是怎么跟 NTT 扯上关系的呢?

我们想,异或的本质是同 0 异 1,互异的情况只有 0,1 和 1,0 (这不废话)

于是考虑这两种情况算贡献,顺便把 i+j−1i+j-1i+j−1 变成 k,(k−j=i−1)k\;,(k-j=i-1)k,(k−j=i−1):
ansi=∑k−j=i−1fj([Sk=1][Tj=0]+[Sk=0][Tj=1])ans_i=\sum_{k-j=i-1}f_j([S_k=1][T_j=0] + [S_k=0][T_j=1])ansi​=k−j=i−1∑​fj​([Sk​=1][Tj​=0]+[Sk​=0][Tj​=1])

其中的 [Sk=1][S_k=1][Sk​=1] 是个条件表达式,Sk=1S_k=1Sk​=1 则值为 1,否则为 0,或许这样还是不太明显,我们再变:
ansi=∑k−j=i−1[Sk=1]⋅(fj[Tj=0])+∑k−j=i−1[Sk=0]⋅(fj[Tj=1])ans_i=\sum_{k-j=i-1}[S_k=1]\cdot (f_j[T_j=0]) + \sum_{k-j=i-1}[S_k=0]\cdot (f_j[T_j=1])ansi​=k−j=i−1∑​[Sk​=1]⋅(fj​[Tj​=0])+k−j=i−1∑​[Sk​=0]⋅(fj​[Tj​=1])

两个卷积!(只需把数组倒一倒)这该是多么强的直觉才能发现是卷积啊

JZM 的印象笔记 (卷积,分块)相关推荐

  1. 深度学习:使用卷积网络实现计算机图像识别,卷积和max pooling操作介绍

    深度学习在计算机图像识别上的应用非常成功.利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络.卷积网络与我们前面实现的网络不通之处在于,它可以直接接 ...

  2. Inception in CNN

    之前也写过GoogLeNet的笔记,但那个时候对Inception有些似懂非懂,这周重新看了一遍,觉得有了新的体会,特地重新写一篇博客与它再续前缘. 本文属于论文笔记性质,特此声明. Network ...

  3. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

    Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...

  4. 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演

    初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...

  5. 如何在 GPU 上优化卷积

    如何在 GPU 上优化卷积 将演示如何在 TVM 中编写高性能卷积实现.正方形大小的输入张量和过滤器为例,假设卷积的输入具有大batch批量.在这个例子中,使用不同的布局存储数据,实现更好的数据局部性 ...

  6. GPU上如何优化卷积

    GPU上如何优化卷积 本文将演示如何在TVM中编写高性能卷积实现.我们以平方大小的输入张量和滤波器为例,假设卷积的输入是大批量的.在本例中,使用不同的布局来存储数据,以实现更好的数据局部性.缓冲区布局 ...

  7. 赠书 | 人工智能识万物:卷积神经网络的前世今生

    来源 |<Python人工智能开发从入门到精通> 作者 | 杨柳.郭坦.鲁银芝 责编 | 晋兆雨 深度学习在技术与应用上的突破引发了第三次人工智能浪潮,获得了空前成功.在前述章节的基础上, ...

  8. 基于GEMM实现的CNN底层算法被改?Google提出全新间接卷积算法

    作者 | Marat Dukhan from Google Research 译者 | 凯隐 责编 | Jane 出品 | AI科技大本营(ID: rgznai100) [导读]本文介绍的内容主要聚焦 ...

  9. 矩阵乘法的优化及其在卷积中的应用

    公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 作者:黎明灰烬 来源:https://zhuanlan.zhihu.com/p/6695839 ...

最新文章

  1. 拿下中科大的计算机课程全靠它了!
  2. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造
  3. 使用一阶微分对图像锐化
  4. HDU - 6749 Mosquito(二分+状态压缩+最大流)
  5. .NET5在开发平台上远优于Java,如何发挥优势?
  6. css 属性名 查询表
  7. Ubuntu下yolov4训练自己的数据集
  8. win10照片不能下一张的解决办法
  9. 爬虫~爬爬爬~task1
  10. 精心整理的计算机专业书单
  11. C#对数据库的各种操作
  12. 8421 BCD码 加减校正
  13. 解决IDEA的maven刷新依赖时出现Connot reconnect错误
  14. java周总结1113_流总结_序列化_xml_html
  15. 全球PM25实时可视化
  16. AI 教你画油画:任意画风都可驾驭
  17. 我爱我家 - 抗争你们这些黑中介滴致命武器之-要你命1000
  18. Zabbx6.0(学习笔记)
  19. 计算机机器人兴趣小组活动总结,科技活动总结范文5篇
  20. 萌新必入!手把手教你玩转Synchronized锁和Lock锁!

热门文章

  1. 家用洗地机到底好不好用?家用洗地机分享
  2. 又找到一款微信机器人!(附源码)
  3. 服务器端获取数据(一)
  4. 前台获取服务器端的值
  5. thinkphp5.1 || 给图片添加文字,图片水印
  6. 梁宁《产品思维》之4+3同理心训练
  7. UE4 时光倒流(蓝图)
  8. 大数据阿里云工具之DataWorks(一)
  9. 计算机网络 吕林涛,吕林涛简介
  10. 图像相似度对比-直方图