玛雅文字

news/2024/11/28 2:38:18/

玛雅文字

**文件名:**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;
}

http://www.ppmy.cn/news/190626.html

相关文章

什么软件测试显示器响应时间准,一般人我不告诉他!显示器响应速度揭秘

前言&#xff1a;显示器的响应时间在2005年开始炒得比较热&#xff0c;到了8ms以下的时代&#xff0c;有一段时间没多少用户关心响应时间这个问题。最近&#xff0c;广角显示器风波再次刮起&#xff0c;低价广角显示器带来的好处是毋庸置疑的&#xff0c;但由于广角的结构原理问…

OpenJudge NOI 1.13 07:玛雅历

【题目链接】 OpenJudge NOI 1.13 07:玛雅历 【题目考点】 1. 数组 2. 取模运算 3. stl map 【解题思路】 输入Haab历的年月日&#xff0c;先确定该日期是从0年0月0日开始后的第几天&#xff0c;再转成Tzolkin历。 需要将Haab历的表示月份的字符串转为月份数0~18&#x…

【ACM】ACM练习——玛雅历

1.问题描述 玛雅历 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 80876 Accepted: 24862 Description 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人…

Bailian2965 玛雅历【日期计算】

2965:玛雅历 总时间限制: 1000ms 内存限制: 65536kB 描述 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这个Haab历法拥有…

gfoj1664 玛雅文字

题目&#xff1a;http://www.gdfzoj.com/oj/contest/469/problems/1 样例解释&#xff1a; 子串Acad、cadA是cAda的子串 看到样例很容易想到桶。。。但300000太大了&#xff0c;于是可以换个方法&#xff0c;比如多用一个桶 #include <cstdio> #include <algorithm&…

POJ1008:玛雅日历

一、Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message, professor discovered that the Maya civilization used a 365 day long year, called Haab, which had 19 months.…

2965:玛雅历

解题思路 1.分别用数组模拟Haab和Tzolkin 2.把给的输入&#xff0c;转化成离世界开始有多少天 3.计算Tzolkin AC代码 //计算输入的日子离世界开始的天数 days //年*365 yue*20 day //计算年份 year days / 260 days - year*260 // 计算月份 前面的数字num1 num day…

NOI 1966 玛雅历

package One; /*** 07:玛雅历 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xff08;玛雅人用于记事的工具&#xff09;中&#xff0c;教授发现玛雅人使用了一个一年有365…