建立后缀树(即反序插入字符串的parent树),然后可以发现按照dfs序排列满足其反串按字典序从小到大排列,那么就可以维护出每一刻子树的串长和,然后直接在dfs序上二分确定节点,再在节点内部乱搞即可求出答案。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define ll long long
5 int V,last,ans,a[N<<1],sz[N<<1],mi[N<<1],id[N<<1],len[N<<1],fa[N<<1],ch[N<<1][31];
6 ll k,mod,l[N<<1],sum[N<<1];
7 char s[N];
8 void add(int c){
9 int p=last,np=last=++V;
10 len[np]=len[p]+1;
11 sz[np]=1;
12 for(;(p)&&(!ch[p][c]);p=fa[p])ch[p][c]=V;
13 if (!p)fa[np]=1;
14 else{
15 int q=ch[p][c];
16 if (len[q]==len[p]+1)fa[np]=q;
17 else{
18 int nq=++V;
19 len[nq]=len[p]+1;
20 memcpy(ch[nq],ch[q],sizeof(ch[q]));
21 fa[nq]=fa[q];
22 fa[np]=fa[q]=nq;
23 for(;(p)&&(ch[p][c]==q);p=fa[p])ch[p][c]=nq;
24 }
25 }
26 }
27 void dfs(int k){
28 a[++a[0]]=k;
29 for(int i=0;i<26;i++)
30 if (ch[k][i])dfs(ch[k][i]);
31 }
32 int main(){
33 int t;
34 scanf("%s%d",s,&t);
35 V=last=1;
36 int n=strlen(s);
37 for(int i=n-1;i>=0;i--)add(s[i]-'a');
38 for(int i=1;i<=V;i++)a[len[i]]++;
39 for(int i=1;i<=n;i++)a[i]+=a[i-1];
40 for(int i=1;i<=V;i++)id[a[len[i]]--]=i;
41 for(int i=1,j=n;i<=V;i++)
42 if (sz[i])mi[i]=--j;
43 memset(a,0,sizeof(a));
44 for(int i=V;i;i--){
45 sz[fa[id[i]]]+=sz[id[i]];
46 mi[fa[id[i]]]=mi[id[i]];
47 }
48 for(int i=V;i;i--)l[i]=(len[fa[i]]+len[i]+1LL)*(len[i]-len[fa[i]])/2*sz[i];
49 memset(ch,0,sizeof(ch));
50 for(int i=1;i<=V;i++)ch[fa[i]][s[mi[i]+len[fa[i]]]-'a']=i;
51 dfs(1);
52 for(int i=1;i<=V;i++)sum[i]=sum[i-1]+l[a[i]];
53 while (t--){
54 scanf("%lld%lld",&k,&mod);
55 k=k*ans%mod+1;
56 int p=lower_bound(sum+1,sum+V+1,k)-sum;
57 k-=sum[p-1];
58 p=a[p];
59 int x=len[fa[p]]+1,y=len[p];
60 while (x<y){
61 int mid=(x+y>>1);
62 if ((mid+len[fa[p]]+1LL)*(mid-len[fa[p]])/2*sz[p]>=k)y=mid;
63 else x=mid+1;
64 }
65 k-=(x+len[fa[p]])*(x-1LL-len[fa[p]])/2*sz[p];
66 printf("%c\n",s[(k-1)%x+mi[p]]);
67 ans+=s[(k-1)%x+mi[p]];
68 }
69 }

[ccKILLKTH]Killjee and k-th letter的更多相关文章

  1. 【干货】”首个“ .NET Core 验证码组件

    前言 众所周知,Dotnet Core目前没有图形API,以前的System.Drawing程序集并没有包含在Dotnet Core 1.0环境中.不过在dotnet core labs项目里可以见到 ...

  2. PHPExcel使用体会

    PHPExcel使用体会 因为毕设导师智能分配系统的需要,系负责人在管理学生和导师时,希望可以使用Excel批量导入学生和导师的信息,学长的报课系统使用的是PHPExcel的类库,于是我也抽空花了2天 ...

  3. Android学习笔记(十)——ListView的使用(上)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! ListView绝对可以称得上是 Android中最常用的控件之一,ListView允许用户通过手指上下滑动的 ...

  4. CCF认证(1)

    #include <iostream> #include <windows.h> using namespace std; typedef struct letter{ int ...

  5. 424. Longest Repeating Character Replacement

    以最左边为开始,往右遍历,不一样的个数大于K的时候停止,回到第一个不一样的地方,以它为开始,继续.. 用QUEUE记录每次不一样的INDEX,以便下一个遍历开始, 从左往右,从右往左各来一次..加上各 ...

  6. ASCII 码对应表

    Macron symbol ASCII CODE 238 : HTML entity : [ Home ][ español ] What is my IP address ? your public ...

  7. [Swift]LeetCode880. 索引处的解码字符串 | Decoded String at Index

    An encoded string S is given.  To find and write the decodedstring to a tape, the encoded string is ...

  8. CF613E Puzzle Lover

    题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...

  9. P1540 机器翻译 模拟

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...

随机推荐

  1. 《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,于是写了这一篇文章,另外也是 ...

  2. VMware中Linux虚拟机与Windows主机共享文件夹

    VMware下Linux虚拟机与Windows主机共享文件夹 1. 安装vm-tool 2. 开启共享文件夹 虚拟机->设置->选项->共享文件夹"右边选择"总是 ...

  3. Python读取Excel表格

    前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...

  4. linux Samba 搭建

    Samba is a free and open-source software package that provides seamless file and print services to S ...

  5. C语言知识_1

    +,-,*,/是C语言中表示四则运算的符号.:用来分割不同的语句{}用来对语句进行分组 函数代表了一组数据处理过程,由一对大括号所包含的多条语句来表示这个处理过程.每个函数有唯一的名字,main函数是 ...

  6. 自定义Push/Pop和Present/Dismiss转场

    项目概述 iOS中最常见的动画无疑是Push和Pop的转场动画了,其次是Present和Dismiss的转场动画. 如果我们想自定义这些转场动画,苹果其实提供了相关的API,在自定义转场之前,我们需要 ...

  7. 网络通信IO的演变过程(二)(一个门外汉的理解)

    2.NIO 当与别人谈论NIO时,一定要弄清楚别人说的NIO是指哪个含义? NIO有2种含义: 1.NonBlocking IO,基于操作系统谈 2.Java New IO,基于Java谈 我们这里主 ...

  8. 安装多个版本的MySQL

    安装多个版本的MySQL 之前在PC机上安装了 MySQL 5.5 后续发现了窗口函数,而窗口函数是 MySQL8 以后才支持的,故在本地又安装了一个 MySQL 8 安装MySQL 5.5 进入my ...

  9. [对对子队]会议记录5.15(Scrum Meeting2)

    今天已完成的工作 吴昭邦 ​ 工作内容:衔接循环指令系统,搭建第4关 ​ 相关issue:实现循环组件 ​ 相关签入:feat: 将模型加入第四关 第四关可以顺利通过 何瑞 ​ 工作内容:衔接循环指令 ...

  10. virtual box搭建虚拟机nat和host only网络配置实用

    virtual box搭建虚拟机nat和host only网络配置实用 一.背景 二.需求 二.设置虚拟机的网络 1.创建一个全局的nat网络 2.添加主机网络管理器 3.设置虚拟机网络 1.网卡1设 ...