题意
给定 m m m 个长度为 n n n 的 01 01 01 串。存在某些位置为 ?
,每个 ?
独立,既可以取 0 0 0,也可以是 1 1 1.
维护 q q q 次操作,每次操作可能为:
- 区间查询:查询有多少个只包含 01 01 01 的串 s s s 满足:存在一种对
?
的赋值方法,使得区间内的每个 01 01 01 串都能与 s s s 完全匹配。 - 单点修改:把第 i i i 个串替换为给定的新串。
1 ≤ m ≤ 1 0 5 , 1 ≤ q ≤ 1 0 6 , 1 ≤ n ≤ 30 1\leq m\leq 10^5, 1\leq q\leq 10^6, 1\leq n\leq 30 1≤m≤105,1≤q≤106,1≤n≤30.
分析
区间查询 + + + 单点修改 ⟹ \Longrightarrow ⟹ 线段树。
主要问题在:如何处理对 [ l , r ] [l, r] [l,r] 进行的查询操作。
若区间中存在两个串 s i , s j s_i, s_j si,sj,存在 k k k 使得 s i [ k ] s_i[k] si[k] 和 s j [ k ] s_j[k] sj