luogu#P5522. [yLOI2019] 棠梨煎雪
[yLOI2019] 棠梨煎雪
题目背景
岁岁花藻檐下共将棠梨煎雪,
自总角至你我某日辗转天边。
天淡天青,宿雨沾襟,
一年一会信笺却只见寥寥数言。
——银临《棠梨煎雪》
题目描述
扶苏正在听《棠梨煎雪》的时候,
歌词中的主人公与她的朋友一年会有一次互相写信给对方,一共通信了 年。为了简化问题,我们认为她们每封信的内容都是一条二进制码,并且所有二进制码的长度都是 。即每封信的内容都是一个长度为 的字符串,这个字符串只含字符 0
或 1
。
这天她拿出了朋友写给她的所有信件,其中第 年的写的信件编号为 。由于信件保存时间过久,上面有一些字符已经模糊不清,我们将这样的位置记为 ?
,?
字符可以被解释为 0
或 1
。由于她的朋友也是人,符合人类的本质,所以朋友在一段连续的时间中书写的内容可能是相同的。现在她想问问你,对于一段连续的年份区间 中的所有信件,假如朋友在这段时间展示了人类的本质,所写的是同一句话,那么这一句话一共有多少种可能的组成。也即一共有多少字符串 ,满足在这个区间内的所有信件的内容都可能是 。
一个长度为 的只含 0,1,?
的字符串 可能是一个字符串 当且仅当 满足如下条件:
- 的长度也是 。
- 中只含字符
0,1
。 - 中所有为
0
的位置在 中也是0
。 - 中所有为
1
的位置在 中也是1
。 - 中为
?
的位置在 中可以为0
也可以是1
。
同时她可能会突然发现看错了某年的信的内容,于是她可能会把某一年的信的内容修改为一个别的只含 0
,1
,?
的长度为 的字符串。
输入格式
每个输入文件中都有且仅有一组测试数据。
输入数据第一行为三个用空格隔开的整数,分别代表代表字符串长度 ,字符串个数 和操作次数 。
下面 行,每行是一个长度为 的字符串,第 行的字符串 代表第 年信的内容。
下面 行,每行的第一个数字是操作编号 。
- 如果 ,那么后面接两个整数 ,代表一次查询操作。
- 如果 ,那么后面接一个整数 ,在一个空格后会有一个长度为 的字符串 ,代表将第 个字符串修改为新的字符串 。
输出格式
为了避免输出过大,请你输出一行一个数代表所有查询的答案异或和对 取异或的结果。
3 3 5
010
0?0
1?0
0 1 2
0 2 3
1 3 0??
0 2 3
0 1 3
2
提示
样例 1 解释
- 对于第一次询问,只有串
010
符合要求。 - 对于第二次询问,由于第二个串的第一位为
1
,第三个串的第一位为0
,故没有串符合要求。 - 修改后将第三个串修改为
0??
。 - 对于第四次询问,有两个串符合要求,分别为
000
和010
。 - 对于第五次询问,只有
010
符合要求。
故答案为 ,他们的异或和再异或 的值为 。
数据规模与约定
本题采用多测试点捆绑测试,共有 7 个子任务。
子任务编号 | 子任务分数 | |||
---|---|---|---|---|
对于全部的测试点,保证:
- ,,。
- ,,。
- 的长度均为 且只含有字符
0
,1
,?
。 - 输入字符串的总长度不超过 。数据在 Linux 下生成,即换行符不含
\r
。
提示
- 请注意常数因子对程序效率造成的影响。
- 请注意数据读入对程序效率造成的影响。
- 请注意输入的问号为嘤文问号,即其 ASCII 值为
注: 为减少错误做法的通过率,时限于 2020 年 7 月由 2000ms 改为 1500ms