C. 算法组 · T3 · 传家印

    传统题 1000ms 512MiB

算法组 · T3 · 传家印

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

某大家族修缮祖祠时整理出一套传家印。族谱共记载了 nn 位成员,编号 1n1 \sim n,每位成员都传下一枚印章,印章上刻着一个小写字母。

族谱按如下规则编排:先祖编号为 11;编号为 ii 的成员,其两房子女分别登记在编号 2i2i2i+12i+1(若某房编号超过 nn,则该房无记载)。

族谱研究馆提出"圆满支系"的说法:对于编号为 ii 的成员,如果把他本人连同他所有后代身上的印章收集起来,这些字母在任意排列的情况下能够组成一个回文字符串,就称 ii 是一个圆满支系的始祖。

研究馆想知道这套族谱里共有多少位圆满支系的始祖。

修复团队随后入驻:他们将对印章进行 qq 次修复,每次把编号为 xx 的成员的印章重新刻为字母 cc(覆盖原来的字母)。

每次修复之后,研究馆都希望知道当前共有多少位圆满支系的始祖。

P.S. 回文字符串是指从左往右念和从右往左念一样的字符串,比如 abcba,aaeebeeaa,xxyyxx

输入格式

输入第一行包含两个正整数 n,qn,q,表示成员数量和修复次数。

接下来一行一个长度为 nn 的字符串,第 ii 个字符表示编号为 ii 的成员印章上的初始字母。

接下来 qq 行,每行一个正整数 xx 和一个小写字母 cc,表示把编号为 xx 的成员的印章重新刻为 cc

输出格式

输出第一行一个整数,表示一开始共有多少位圆满支系的始祖

接下来 qq 行,每行一个整数,表示每次修复后当前共有多少位圆满支系的始祖

数据范围

对于 100%100\% 的数据,满足 1n,q1000001 \leq n,q \leq 100000

输入样例

7 2
aabcbca
7 b
1 c

输出样例

5
6
5

样例解释

族谱一开始是这样的:

        a(1)
       /      \
     a(2)     b(3)
    /    \    /    \
  c(4)  b(5) c(6)  a(7)

一开始,4,5,6,74,5,6,7 号成员的支系各只有一个字母,自然是回文;11 号支系的七个字母能排成 abcacbaabcacba 这样的回文字符串;而 22 号支系与 33 号支系的字母都无法排成回文字符串。所以一开始共有 55 位圆满支系的始祖。

  1. 修复 77 号印章为 bb
        a(1)
       /      \
     a(2)     b(3)
    /    \    /    \
  c(4)  b(5) c(6)  b(7)

33 号支系的字母 b,c,bb,c,b 能排成 bcbbcb11 号支系的字母仍能排成回文字符串(如 abcbcbaabcbcba),此时共有 66 位圆满支系的始祖

  1. 修复 11 号印章为 cc
        c(1)
       /      \
     a(2)     b(3)
    /    \    /    \
  c(4)  b(5) c(6)  b(7)

11 号支系的字母变为 a,b,b,b,c,c,ca,b,b,b,c,c,c,无法排成回文字符串,此时共有 55 位圆满支系的始祖

2026年下半年教师测试-算法组

未参加
状态
已结束
规则
ACM/ICPC
题目
4
开始于
2026-9-17 9:00
结束于
2026-9-17 12:00
持续时间
3 小时
主持人
参赛人数
5