【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升序排序,记小根堆堆顶 ...
随机推荐
- 脑图和MarkDown
使用脑图整理前端体系 根据以下网址整理 http://web.jobbole.com/84062/ http://naotu.baidu.com/ 学习MarkDown语法格式 (一) 标题 在首行插 ...
- LDAP第三天 MySQL+LDAP 安装
https://www.easysoft.com/applications/openldap/back-sql-odbc.html OpenLDAP 使用 SQLServer 和 Oracl ...
- 运用html常用标签和css定位等学做模仿百度导航页面
导航部分文字链接,鼠标触碰变颜色,除百度logo引用图片外,其它均代码编写.注释部分是一开始用的百度一下截图做的按钮,后来用div填充颜色写了一个按钮.效果图如下. HTML代码如下: <!DO ...
- day3字符串操作作业详解
1.day3题目 1.有变量name = "aleX leNb" 完成如下操作: 1) 移除 name 变量对应的值两边的空格,并输出处理结果 2) 移除name变量左边的&quo ...
- 常见的div布局面试题
题目1:如何让一个子元素在父元素里水平垂直居中? 方法1 .box{width:400px;height:400px;background:#ccc;position:relative;} .chil ...
- CentOS与Ubuntu修改主机名
CentOS 1.执行hostname查看主机名 2.hostname + 主机名 使需要修改的主机名立即生效,但是下次重启会失效,故需要执行第三步 3.vim /etc/sysconfig/net ...
- easyui datagrid编辑时编辑框自动获取焦点
onDblClickCell:function(rowIndex, field, val){//双击单元格监听器 $(this).datagrid('beginEdit',rowIndex);//开启 ...
- php:封装了个时间函数,返回类似“1分钟前发布”,“5小时前发布”,“3年前发布”
处理和时间有关的时候,像发布问题等通常不会用date格式的时间,而是用类似"3分钟前发布"等格式,下面封装的php函数就可以使用: 注意:当有用到strtotime()函数的记得加 ...
- HTML——传统布局的使用
传统布局:使用table来做整体页面的布局 总结:这种方式来制作页面现在也不是很多了,感觉并不是很高效. 需要先用photoshop量出页面布局具体的尺寸位置,再将其划分为表格,对每个格子进行编辑. ...
- Linux环境 Java内存快速查看
最近生产环境遇到内存老是占用很大的情况,16G的内存Free的内存只剩100多M,仿佛一颗定时炸弹一般,说不定就服务Down了.于是开始网上不断的找查看内存使用的方法.现学现卖,以下通过一个例子来演示 ...