JZM 的印象笔记 (卷积,分块)
题面
题目背景
大名鼎鼎的 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 的印象笔记 (卷积,分块)相关推荐
- 深度学习:使用卷积网络实现计算机图像识别,卷积和max pooling操作介绍
深度学习在计算机图像识别上的应用非常成功.利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络.卷积网络与我们前面实现的网络不通之处在于,它可以直接接 ...
- Inception in CNN
之前也写过GoogLeNet的笔记,但那个时候对Inception有些似懂非懂,这周重新看了一遍,觉得有了新的体会,特地重新写一篇博客与它再续前缘. 本文属于论文笔记性质,特此声明. Network ...
- 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛
Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...
- 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演
初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...
- 如何在 GPU 上优化卷积
如何在 GPU 上优化卷积 将演示如何在 TVM 中编写高性能卷积实现.正方形大小的输入张量和过滤器为例,假设卷积的输入具有大batch批量.在这个例子中,使用不同的布局存储数据,实现更好的数据局部性 ...
- GPU上如何优化卷积
GPU上如何优化卷积 本文将演示如何在TVM中编写高性能卷积实现.我们以平方大小的输入张量和滤波器为例,假设卷积的输入是大批量的.在本例中,使用不同的布局来存储数据,以实现更好的数据局部性.缓冲区布局 ...
- 赠书 | 人工智能识万物:卷积神经网络的前世今生
来源 |<Python人工智能开发从入门到精通> 作者 | 杨柳.郭坦.鲁银芝 责编 | 晋兆雨 深度学习在技术与应用上的突破引发了第三次人工智能浪潮,获得了空前成功.在前述章节的基础上, ...
- 基于GEMM实现的CNN底层算法被改?Google提出全新间接卷积算法
作者 | Marat Dukhan from Google Research 译者 | 凯隐 责编 | Jane 出品 | AI科技大本营(ID: rgznai100) [导读]本文介绍的内容主要聚焦 ...
- 矩阵乘法的优化及其在卷积中的应用
公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 作者:黎明灰烬 来源:https://zhuanlan.zhihu.com/p/6695839 ...
最新文章
- 拿下中科大的计算机课程全靠它了!
- K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造
- 使用一阶微分对图像锐化
- HDU - 6749 Mosquito(二分+状态压缩+最大流)
- .NET5在开发平台上远优于Java,如何发挥优势?
- css 属性名 查询表
- Ubuntu下yolov4训练自己的数据集
- win10照片不能下一张的解决办法
- 爬虫~爬爬爬~task1
- 精心整理的计算机专业书单
- C#对数据库的各种操作
- 8421 BCD码 加减校正
- 解决IDEA的maven刷新依赖时出现Connot reconnect错误
- java周总结1113_流总结_序列化_xml_html
- 全球PM25实时可视化
- AI 教你画油画:任意画风都可驾驭
- 我爱我家 - 抗争你们这些黑中介滴致命武器之-要你命1000
- Zabbx6.0(学习笔记)
- 计算机机器人兴趣小组活动总结,科技活动总结范文5篇
- 萌新必入!手把手教你玩转Synchronized锁和Lock锁!