ISIJ 2018 玛雅文字(Training Round D5T1)

无忧公主 2018-07-10

题目名称:玛雅文字

**文件名:**mayan.in / mayan.out

题目描述

解读玛雅文字向来不简单,因为单词中的字母顺序可以是任意排列的。今天,科研团队找到了你来解决一个简化过的问题——在给定的一段玛雅文字 S 中,求出给定的单词 T 出现了几次,并保证 S 和 T 均由大小写字母构成。

限制

1s 32M

1≤|T|≤ 3000,|T|≤|S|≤ 3,000,000

输入格式

第一行,两个整数,表示 |T| 和 |S|

第二行,一个字符串 T

第三行,一个字符串 S

输出格式

一个整数,表示出现的次数

输入样例

4 11

cAda

AbrAcadAbRa

输出样例

2

样例解释

子串 Acad 和 cadA 均是 cAda 的排列,因此一共出现了 2 次。

题解

维护 |S| 中所有长度为 |T| 的区间里,每种字母的出现次数,维护这与实际次数一致的字母个数,每次修改至多 2 种字母,因此可以线性扫描计数。

#include <bits/stdc++.h>
using namespace std;
template <typename T> void read(T &t) {char ch=getchar(); int f=1; t=0;while ('0'>ch||ch>'9') { if (ch=='-') f=-1; ch=getchar(); }do { (t*=10)+=ch-'0'; ch=getchar(); } while ('0'<=ch&&ch<='9'); t*=f;
}
typedef long long ll;
const int maxn=(3e6)+10;
int n,m,c1[60],c2[60],cnt,ans;
char s1[maxn],s2[maxn];
int f(char ch) {if ('a'<=ch&&ch<='z') return ch-'a'+1;return ch-'A'+27;
}
int main() {read(n); read(m);scanf("%s %s",s1+1,s2+1);for (int i=1;i<=n;i++)c1[f(s1[i])]++;for (int i=1;i<=n;i++)c2[f(s2[i])]++;for (int i=1;i<=52;i++)if (c1[i]==c2[i]) cnt++;if (cnt==52) ans++;for (int i=n+1;i<=m;i++) {int tmp=c2[f(s2[i])];c2[f(s2[i])]++;if (tmp==c1[f(s2[i])]) cnt--;else if (c2[f(s2[i])]==c1[f(s2[i])]) cnt++;tmp=c2[f(s2[i-n])];c2[f(s2[i-n])]--;if (tmp==c1[f(s2[i-n])]) cnt--;else if (c2[f(s2[i-n])]==c1[f(s2[i-n])]) cnt++;if (cnt==52) ans++;}printf("%d\n",ans);return 0;
}

ISIJ 2018 玛雅文字相关推荐

  1. ISIJ 2018玛雅文字

    ISIJ 2018 玛雅文字(Training Round D5T1) 题目名称:玛雅文字 **文件名:**mayan.in / mayan.out 题目描述 解读玛雅文字向来不简单,因为单词中的字母 ...

  2. 1275配对碱基链 1852玛雅文字 +map讲解 (map)

    目录 map讲解 1275配对碱基链 题目描述 解题思路 代码部分 1852玛雅文字 题目描述 解题思路 代码部分 map讲解         通过二分查找树实现的数据结构,元素在map中按照大小顺序 ...

  3. 【NOIP模拟】玛雅文字

    题面 解读玛雅文字向来不简单,因为单词中的字母顺序可以是任意排列的.今天,科研团队找到了你来解决一个简化过的问题--在给定的一段玛雅文字 S 中,求出给定的单词 T 出现了几次,并保证 S 和 T 均 ...

  4. 周志华组最新论文提出“溯因学习”,受玛雅文字启发的神经逻辑机

    假设你在踢足球,球来了,你把球传给队友,"传球"这一个动作,实际上涉及两种不同的思维过程. 首先,你需要意识到脚下有个球,相当于识别(感知):其次,你需要判断把球传给哪个队友,这是 ...

  5. gfoj1664 玛雅文字

    题目:http://www.gdfzoj.com/oj/contest/469/problems/1 样例解释: 子串Acad.cadA是cAda的子串 看到样例很容易想到桶...但300000太大了 ...

  6. 文字描边加粗_让文字表现出十足的个性!

    文/刘也 如今文字已不仅仅是一种传播信息的工具,通过一番艺术加工后,还能使其具备视觉上的装饰性,同时提升设计作品的注目度. 让文字变得更具个性的方法有很多,例如:文字的意象或表象化处理.图形化文字等. ...

  7. delphi7 如何判定dbgrid两行重复_良渚文化陶器上的图案、符号和文字(5)良渚文化陶器上文字的判定...

    5.      良渚文化陶器文字的判定   陈逸民  陈莺 良渚文化陶器上的图案和符号,是不是文字,它们判定的依据是什么呢? 图案也可能是文字,这种文字就是用图画的形式出现的,比如,玛雅文化的图案文字 ...

  8. Maya(玛雅)文明

    玛雅文明     玛雅文明是中美洲古代印第安人文明,美洲古代印第安文明的杰出代表,以印第安玛雅人而得名.主要分布在墨西哥南部.危地马拉.巴西.伯利兹以及洪都拉斯和萨尔瓦多西部地区.约形成于公元前250 ...

  9. 玛雅预言--真还是假,近期地震火山,接连不断(续)

    如此推算,这好像是最后一个时间周期了.这对应人类历史的发展,也应该是最后一个历史时期了.这是一个最短的历史发展时期,只有67年之短. 这个只有67年人类历史阶段始于何时?回顾人类的近代文明史,有什么巨 ...

最新文章

  1. 接口测试工具-fiddler的运用
  2. eureka server配置_springcloud项目搭建第三节:eureka集群
  3. 统计MOOC证书 (15 分)
  4. charles测试学习 手机端连接电脑进行抓包分析
  5. 脉冲宽度调制pdm_两个相同Vpp驱动的 PAM4 MZ调制器
  6. yolov3前向传播(二)-- yolov3相关模块的解析与实现(二)
  7. 俄罗斯方块游戏设计的有关问题
  8. Java访问用户名密码验证的url
  9. Android Studio 统计代码行数插件 — Statistic 申请软著写源程序量
  10. android高德地图获取省市编码,android中高德地图地理编码
  11. CUDA编程.cu文件
  12. 一台电脑有几个计算机用户账户,多人共用一台电脑设置多个使用账户的方法
  13. baidu卫兵新版力推三级加快器 电脑一键提速50%
  14. RAC 11G ASM磁盘损坏恢复
  15. Smokeping安装教程
  16. 前端工程师第一篇-HTML(1)
  17. 前端全栈工程师进阶学习笔记
  18. Anchor-based 与 Anchor-free 优缺点
  19. HDFS(下):NameNode和SecondaryNameNode、HDFS工作机制、故障处理、集群安全模式、服役退役节点、集群黑白名单、DataNode多目录详解、HDFS2.x新特性
  20. JAVA实验,求柱体面积

热门文章

  1. Python之字符串的基本操作(很详细)
  2. um是代表什么意思_开平板规格代表什么意思?纯干货
  3. SOCK_STREAM,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW.
  4. windows安装部署hadoop 2.7.7
  5. 空心字母金字塔 (10 分)(java)
  6. 思科计算机网络设计局域网,CISCO局域网设计(毕业设计)_图文.doc
  7. 芯片丨英伟达同软银等合作 在日韩布署云游戏服务器
  8. 电脑有网(如可以登QQ),但浏览器连不上网络
  9. linux里wps打开ppt乱码,WPS打开PPT出现乱码怎么处理?
  10. Wannafly挑战赛26 题解