ISIJ 2018 玛雅文字(Training Round D5T1)

题目名称:玛雅文字

**文件名:**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 次。


分析

不明白为什么会有人想到kmp,不是说好了与排列顺序无关。。。。
明显是统计相同序列长的字符串看每个字母出现次数是否相同。如果相同就ans++;本来想着hash一下,结论是完全没必要,直接暴力枚举即可。用52(104)个桶统计字母数,每次向右移动一位,维护模串长度不变,再暴力判定。时间复杂度为O(52*n)。

有复杂度更优的O(n)算法,这里不提了,反正已经做出来了,懒得写 ~~

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
char t[3100],s[3000100];
int a[26][2],b[26][2];
int lt,ls;
bool check(){for(int i=0;i<2;i++)for(int j=0;j<26;j++)if(a[j][i]!=b[j][i]) return 0;return 1;
}
int main(){freopen("mayan.in","r",stdin);freopen("mayan.out","w",stdout);cin>>lt>>ls;scanf("%s",t+1);scanf("%s",s+1);memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int i=1;i<=lt;i++){if(t[i]>='a'&&t[i]<='z') a[t[i]-'a'][0]++;else a[t[i]-'A'][1]++;}for(int j=1;j<=lt;j++){if(s[j]>='a'&&s[j]<='z') b[s[j]-'a'][0]++;else b[s[j]-'A'][1]++;}int i=1,j=lt,ans=0;if(check())ans++;while(j<ls){if(s[i]>='a'&&s[i]<='z') b[s[i]-'a'][0]--;else b[s[i]-'A'][1]--;i++,j++;if(s[j]>='a'&&s[j]<='z') b[s[j]-'a'][0]++;else b[s[j]-'A'][1]++;if(check())ans++;}cout<<ans<<endl;
}

ISIJ 2018玛雅文字相关推荐

  1. ISIJ 2018 玛雅文字

    ISIJ 2018 玛雅文字(Training Round D5T1) 无忧公主 2018-07-10 题目名称:玛雅文字 **文件名:**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. 2018-3-19科学网--贾琳老师《思维力量》笔记摘选(触动自己)
  2. 如何在centos7下tomcat中安装https
  3. QT学习笔记(-): 利用QHttp进行http下载(1)
  4. 机械设计基础第一章绪论精选习题(全覆盖,无死角版)2018-01-06
  5. 越来越多的人不刷朋友圈竟然是因为.....
  6. 【Java】命令行下的Java模块化建构、编译与执行
  7. 太吾绘卷第一世攻略_育劳 | 花菜小当家,巧克力蛋糕卷的出道秘籍
  8. python3提取字符串中的数字_如何在Python中从字符串中提取数字?
  9. 从单机到集群会话的管理之集群模式一
  10. MATLAB2015a中Simulink使用S函数的方法全过程
  11. 高斯滤波(Gauss filtering)
  12. 学习记录-FDD大规模MIMO系统的稀疏信道估计技术研究
  13. poi 3.17合并单元格报错 java.lang.IllegalArgumentException: Merged region A1 must contain 2 or more cells
  14. 生产环境突然编译报错:‘XXXX‘ is not defined no-undef
  15. python读取csv文件并绘图
  16. 这样的心态,值得拥有
  17. disruptor源码阅读与分析---RingBuffer与Sequence
  18. BCB vs. VC++
  19. ArcGIS_数字高程模型的建立
  20. 关于印发《湖南省首版次软件产品认定管理办法》的通知

热门文章

  1. 车牌识别系统分步详解
  2. Java游戏开发 —— 五子棋
  3. 如何将图片压缩到200k以下?
  4. 玩机搞机----修改手机各项参数工具解析 过验证 变新机
  5. DELMIA教程之焊接工作站简介
  6. 投资的不少企业濒临破产,软银面临巨额债务危机
  7. 如何编辑“只读模式”下的PPT文件?
  8. php性能极限,利用autobench测试web服务器极限并发数
  9. 魔兽发信息给其他服务器的人,魔兽世界怎么跨服密人(魔兽怀旧服可以跨服组队吗)...
  10. 【啃书C++Primer5】-c++有些理论基础需要了解,墙裂建议看看原书,有太多细节需要注意了