GP28430. 潮汐电报码

提交5 通过2
通过率40%
文件IO启用
输入文件tide.in
输出文件tide.out
时间限制1000ms
内存限制512MiB
    ID: 14589 传统题 文件IO 输入文件:tide.in 输出文件:tide.out 1000ms 512MiB 尝试: 5 已通过: 2 难度: 提高+/省选- 上传者: 标签>分治

题目描述

题目描述

潮汐站使用 0 和 1 记录信号。定义两类记录串 Ui,DiU_i,D_i:

U0=0,D0=11.U_0=0,\qquad D_0=11.

对于 i≥1i\ge 1,有

Ui=Ui−1+1+Di−1+00+Ui−1,U_i=U_{i-1}+1+D_{i-1}+00+U_{i-1}, Di=Di−1+0+Ui−1+11+Di−1,D_i=D_{i-1}+0+U_{i-1}+11+D_{i-1},

其中 ++ 表示字符串拼接。例如,U1=0111000U_1=0111000,D1=11001111D_1=11001111。

给定层数 nn 和模式 cc。当 c=Uc=\mathrm{U} 时,目标记录串 W=UnW=U_n;当 c=Dc=\mathrm{D} 时,W=DnW=D_n。字符串下标从 11 开始。

你需要回答 qq 个互相独立的询问:

  • 1 k:求 WW 的第 kk 个字符;
  • 2 x:考虑 WW 的前 xx 个字符,求其中最长的、所有字符都相同的连续子串长度。

记录串可能极长,不能直接完整写出。

输入格式

从文件 tide.in 中读取数据。

第一行输入三个量 n,c,qn,c,q,分别表示层数、模式和询问数。

接下来 qq 行,每行输入一个询问,格式为 1 k 或 2 x。

输出格式

输出到文件 tide.out 中。

对于每个询问输出一行:

  • 对于 1 k,输出第 kk 个字符;
  • 对于 2 x,输出所求最长连续子串的长度。

每个询问的答案由上述定义唯一确定。

2 U 5
1 1
1 8
2 7
2 16
2 25
0
1
3
4
4
0 D 3
1 2
2 1
2 2
1
1
2

样例解释

样例 #1 中,

U_2 = 0111000111001111000111000

它的前 77 个字符为 0111000,最长相同字符连续段是 111;前 1616 个字符以 1111 结尾,因此对应答案为 44。

样例 #2 中,D0=11D_0=11。

数据规模与约定

对于所有数据,保证:

  • 0≤n≤1090\le n\le 10^9;
  • cc 为 U 或 D;
  • 1≤q≤2×1051\le q\le 2\times 10^5;
  • 每个询问的类型为 11 或 22;
  • 对于 1 k,1≤k≤min⁡(1018,∣W∣)1\le k\le\min(10^{18},|W|);
  • 对于 2 x,1≤x≤min⁡(1018,∣W∣)1\le x\le\min(10^{18},|W|)。

其中,∣W∣|W| 表示字符串 WW 的长度。

本题采用子任务捆绑计分。只有通过某个子任务内的所有测试点,才能获得该子任务的分数。各子任务独立计分。

子任务编号 分值 额外约束
11 1515 n≤8,q≤100n\le 8,q\le 100
22 2020 所有询问的类型均为 11
33 3030 n≤37n\le 37
44 3535 无特殊限制

下发文件

下载三组测试数据,非真实测试数据