【NOIP2017提高A组冲刺11.8】好文章
#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】好文章的更多相关文章
- JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章
5462. [NOIP2017提高A组冲刺11.8]好文章 (File IO): input:article.in output:article.out Time Limits: 1000 ms M ...
- 5458. 【NOIP2017提高A组冲刺11.7】质数
5458. [NOIP2017提高A组冲刺11.7]质数 (File IO): input:prime.in output:prime.out Time Limits: 1000 ms Memory ...
- JZOJ 5456. 【NOIP2017提高A组冲刺11.6】奇怪的队列
5456. [NOIP2017提高A组冲刺11.6]奇怪的队列 (File IO): input:queue.in output:queue.out Time Limits: 1000 ms Mem ...
- 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 ...
- 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 ...
- JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物
5461. [NOIP2017提高A组冲刺11.8]购物 (File IO): input:shopping.in output:shopping.out Time Limits: 1000 ms ...
- [JZOJ5455]【NOIP2017提高A组冲刺11.6】拆网线
Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...
- 【NOIP2017提高A组冲刺11.6】拆网线
和syq大兄弟吐槽题目不小心yy出了正解.. 最优的选法就是选两个两个相互独立的,欸这不就是最大匹配吗?那多的企鹅就新加一条边呗?不够的就除以2上取整呗? 欸?AC了? 树也是一个二分图,最大匹配=最 ...
- 【NOIP2017提高A组冲刺11.8】购物
这个范围对DP不友好,和CF的一道C题非常像,贪心+后悔. 先使用k个优惠券购买k个q最小的(钱不购买则退出),同时把这k个p[i]-q[i]放入小根堆,然后将剩下的n-k个按p升序排序,记小根堆堆顶 ...
随机推荐
- oracle merge 目标表以及源表存在重复列的问题(转)
SQL> select * from t_source; ...
- JAVAFX-2 开发应用
理解javafx 架构 ● 场景图(Scene Graph) ● JavaFX功能的公开API(Java Public APIs for JavaFX Features) ● 图形系统(Graphic ...
- js根据等号(=)前名称获取参数值
var GetUrlParam=function (paraName) { var url = document.location.toString(); var arrObj = url.split ...
- mac mysql 编码配置
mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...
- Codeforces 1141F2(贪心、预处理)
要点 一开始dp然后码力太辣鸡并且算法带假于是调了很久一交还WA在28-- 吐槽完毕.后来想拿栈优化dp时发现其实完全不需要dp,贪心选取即可,当前的不兼容就干脆不要它了,结果不会变差.然后想要什么就 ...
- hdu1175-连连看(dfs)
一个一个走,记录方向改变了几次,不能超过两次,两次如果还没到终点return: #include<cstdio> #include<string.h> #define inf ...
- Java EE学习笔记(十)
MyBatis与Spring的整合 1.整合环境搭建 1).要实现MyBatis与Spring的整合,很明显需要这两个框架的JAR包,但是只使用这两个框架中所提供的JAR包是不够的,还需要其他的JAR ...
- Net Core免费开源分布式异常日志收集框架Exceptionless
asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 https://www.cnblogs.com/yilezhu/p/9193723.htm ...
- 持续集成~Jenkins构建dotnetCore的项目
上周一个大件就是dotnet core2.0发布了,伴随着.NET Standard2.0也发布了,整个微软的生态环境大好,当然也有一个BUG出来了,比如EFCore对Mysql的支持比起1.1来说, ...
- java中循环的不同终止方式
1.break:直接强行跳出当前循环,不再执行剩余代码.但在多重循环的情况下,若break在内层循环中,则仅仅终止了内层循环,外循环照常执行. 2.continue:仅仅终止此次循环. 3.retur ...