#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; typedef long long ll; struct HH{
ll mod,base,d;
ll sta;
void update(int x){
sta+=x;sta*=base;sta%=mod;
}
void del(int x){
sta-=(x*d);
while(sta<) sta+=mod;
}
}h1,h2; const int MAXN=; ll qpow(ll x,int y,ll mod){
ll ret=;
while(y){
if(y&){ret*=x;ret%=mod;}
x*=x;x%=mod;
y>>=;
}
return ret;
} struct Node{
ll x,y;
Node(ll u=,ll v=){x=u;y=v;}
bool operator <(const Node &rhs) const {
return x==rhs.x?y<rhs.y:x<rhs.x;
}
}node[MAXN];
int tot; int n,m;
char s[MAXN];
int ans=; signed main(){
// freopen("article.in","r",stdin);
// freopen("article.out","w",stdout);
scanf("%d%d",&n,&m);
h1.base=;h2.base=;
h1.mod=;
h2.mod=;
h1.d=qpow(h1.base,m,h1.mod);
h2.d=qpow(h2.base,m,h2.mod);
scanf("%s",s+);
for(int i=;i<=m;i++){
h1.update(s[i]-'a');
h2.update(s[i]-'a');
}
node[++tot]=(Node(h1.sta,h2.sta));
for(int i=m+;i<=n;i++){
h1.del(s[i-m]-'a');
h2.del(s[i-m]-'a');
h1.update(s[i]-'a');
h2.update(s[i]-'a');
node[++tot]=(Node(h1.sta,h2.sta));
}
sort(node+,node++tot);
for(int i=;i<=tot;i++){
if(node[i].x!=node[i-].x||node[i].y!=node[i-].y) ans++;
}
cout<<ans;
return ;
}

【NOIP2017提高A组冲刺11.8】好文章的更多相关文章

  1. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    5462. [NOIP2017提高A组冲刺11.8]好文章 (File IO): input:article.in output:article.out Time Limits: 1000 ms  M ...

  2. 5458. 【NOIP2017提高A组冲刺11.7】质数

    5458. [NOIP2017提高A组冲刺11.7]质数 (File IO): input:prime.in output:prime.out Time Limits: 1000 ms  Memory ...

  3. JZOJ 5456. 【NOIP2017提高A组冲刺11.6】奇怪的队列

    5456. [NOIP2017提高A组冲刺11.6]奇怪的队列 (File IO): input:queue.in output:queue.out Time Limits: 1000 ms  Mem ...

  4. JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室

    5459. [NOIP2017提高A组冲刺11.7]密室 (File IO): input:room.in output:room.out Time Limits: 1000 ms  Memory L ...

  5. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    455. [NOIP2017提高A组冲刺11.6]拆网线 (File IO): input:tree.in output:tree.out Time Limits: 1000 ms  Memory L ...

  6. JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物

    5461. [NOIP2017提高A组冲刺11.8]购物 (File IO): input:shopping.in output:shopping.out Time Limits: 1000 ms   ...

  7. [JZOJ5455]【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  8. 【NOIP2017提高A组冲刺11.6】拆网线

    和syq大兄弟吐槽题目不小心yy出了正解.. 最优的选法就是选两个两个相互独立的,欸这不就是最大匹配吗?那多的企鹅就新加一条边呗?不够的就除以2上取整呗? 欸?AC了? 树也是一个二分图,最大匹配=最 ...

  9. 【NOIP2017提高A组冲刺11.8】购物

    这个范围对DP不友好,和CF的一道C题非常像,贪心+后悔. 先使用k个优惠券购买k个q最小的(钱不购买则退出),同时把这k个p[i]-q[i]放入小根堆,然后将剩下的n-k个按p升序排序,记小根堆堆顶 ...

随机推荐

  1. 洛谷 P3931 SAC E#1 - 一道难题 Tree

    题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是她给前来救她的魏潇承留了一个线索. 她设置了一棵树( ...

  2. 在双系统(Win7和Ubuntu Kylin)中卸载Ubuntu

    由于以前学习Linux相关的知识,所以在win7的基础上装了ubuntu系统,最近在使用中老是出现一些问题,想将其卸载,于是在网上找了些相关方法. 我每次开机时,都会出现GRUB界面(我需要选择要进入 ...

  3. vue教程2-组件化开发

    全局组件 <div id="app"> <cs1></cs1> </div> <script> Vue.componen ...

  4. MySQL索引原理与慢查询

    =========索引原理与慢查询======= 阅读目录 -     一.介绍 -     二.索引的原理 -     三.索引的数据结构 -     四.聚集索引与辅助索引 -     五.MyS ...

  5. Codeforces Round #562 (Div. 2) C. Increasing by Modulo

    链接:https://codeforces.com/contest/1169/problem/C 题意: Toad Zitz has an array of integers, each intege ...

  6. SSH 的端口转发

    第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我 ...

  7. 走进docker的世界之入门篇

    by zhouzhipeng from https://blog.zhouzhipeng.com/walk-in-docker-beginning.html本文可全文转载,但需要保留原作者和出处. 什 ...

  8. 用于<挣值管理>的各种指标计算

    PV(Planning Value) 含义:计划价值,截至到某个时间计划工作经批准的成本预算. 公式:PV=计划工作数X计划单价. BAC 含义:完工预算,截至到完工时间计划工作经批准的成本预算,即完 ...

  9. 基于Java实现的快速排序

    简述 快速排序是一种排序执行效率很高的排序算法,它利用分治法来对待排序序列进行分治排序,它的思想主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字小,后面一部分比关键字大,然后再对这 ...

  10. java代码关闭tomcat程序

    1.通过java代码实现tomcat的关闭 2.tomcatStop.java package test; import java.io.BufferedReader; import java.io. ...