当前位置: 首页 > news >正文

P5112 FZOUTSY

传送门

没想到这题还这能用莫队……本来看看以为复杂度会挂的……
预处理出每个字母开头往后\(k\)个的字符串的哈希值,然后大概就是那道小z的袜子了
而且据说这题的哈希得用自然溢出

//minamoto
#include<bits/stdc++.h>
#define R register
#define ll unsigned long long
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int N=3e6+5,Base=233;
int n,m,cnt[N],rt[N],k,q,S,l,r,tot;char s[N];ll bin[N],a[N],b[N],sum[N],ans[N],res;
struct node{
    int l,r,id;
    inline bool operator <(const node &b)const
    {return rt[l]==rt[b.l]?rt[l]&1?r<b.r:r>b.r:l<b.l;}
}qq[100005];
inline void add(R int x){res+=cnt[a[x]],++cnt[a[x]];}
inline void del(R int x){--cnt[a[x]],res-=cnt[a[x]];}
int main(){
//  freopen("testdata.in","r",stdin);
    scanf("%d%d%d",&n,&q,&k),S=n/sqrt(q);if(S==0)S=1;
    scanf("%s",s+1);
    bin[0]=1;fp(i,1,n)bin[i]=bin[i-1]*Base,sum[i]=sum[i-1]*Base+s[i]-'a',rt[i]=(i-1)/S+1;
    n=n-k+1;
    fp(i,1,n)b[i]=a[i]=sum[i+k-1]-bin[k]*sum[i-1];
    sort(b+1,b+1+n),m=unique(b+1,b+1+n)-b-1;
    fp(i,1,n)a[i]=lower_bound(b+1,b+1+m,a[i])-b;
    fp(i,1,q){
        scanf("%d%d",&l,&r);
        if(l<=n){
            if(r>n)r=n;
            ++tot,qq[tot].l=l,qq[tot].r=r,qq[tot].id=i;
        }
    }sort(qq+1,qq+1+tot);
    res=0,l=1,r=0;
    fp(i,1,tot){
        while(l>qq[i].l)add(--l);
        while(r<qq[i].r)add(++r);
        while(l<qq[i].l)del(l++);
        while(r>qq[i].r)del(r--);
        ans[qq[i].id]=res;
    }fp(i,1,q)printf("%lld\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/10165387.html

相关文章:

  • java B2B2C springmvc mybatis多租户电子商城系统- 路由定位器
  • linux对vxlan的支持
  • Mysql优化
  • 3.1Python的判断选择语句
  • 深度解析ES6通过WeakMap解决内存泄漏问题
  • Redis 和 memcache 简单比较
  • verilog语法实例学习(1)
  • Docker三剑客之docker-machine
  • 正者表达式exec和match
  • Linux操作系统有什么吸引力,在程序员中这么受欢迎!
  • Oracle常用语句
  • Ubuntu Vscode安装
  • wx2tt 微信小程序转头条小程序工具
  • Min_25筛
  • spring-boot切面编程-日志记录
  • centos安装java运行环境jdk+tomcat
  • DOM的那些事
  • ES6核心特性
  • iOS | NSProxy
  • Kibana配置logstash,报表一体化
  • Koa2 之文件上传下载
  • Laravel 实践之路: 数据库迁移与数据填充
  • magento2项目上线注意事项
  • Service Worker
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深入浅出Node.js
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #QT项目实战(天气预报)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (day6) 319. 灯泡开关
  • (ibm)Java 语言的 XPath API
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)mysql使用Navicat 导出和导入数据库
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [android学习笔记]学习jni编程
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [HackMyVM]靶场 Wild
  • [hdu 4405] Aeroplane chess [概率DP 期望]
  • [HTML API]HTMLCollection
  • [HTTP]HTTP协议的状态码
  • [IE技巧] IE 中打开Office文件的设置
  • [MZ test.16]P2 math 乘方e
  • [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型
  • [node] Node.js的Web 模块