使用差异区间与区间赋值算法。
设发布前后的状态串分别为 A 和 B。找出所有满足 Ai=Bi 的位置:
多多在维护一批编号 1, 2, …, n 排列的实例。每个实例只有两种状态: 0 表示使用旧版本,1 表示使用新版本。
多多在灰度发布平台执行了一次操作:
区间中可以包含原本就已经处于状态 v 的实例,但这次操作必须至少改变一个实例的状态。发布前后的实例状态串 A 和 B 被完整保留,但操作日志丢失了,保证至少存在一种操作,可以把 A 变为 B。
请判断这次操作能否被唯一确定。若合法的三元组 (L, R, V) 恰好只有一个,输出它,否则输出 −1。 注意:只要 L、R 或 V 中有任意一项不同,就视为不同的操作,即使它们得到的发布后状态完全相同。
第一行包含一个正整数 T,表示测试用例的数量。
对于每个测试用例:
第一行包含一个整数 n,表示实例数量。
第二行包含一个长度为 n 的 01 串 A,表示发布前的状态。
第三行包含一个长度为 n 的 01 串 B,表示发布后的状态。
对于每个测试用例:
如果操作唯一,输出一行三个整数 L R V。
如果不存在唯一操作,输出一行 −1。
1≤T≤10
A 和 B 均为长度恰好为 n 的 01 串;
单个输入文件中,所有测试用例的 n 之和不超过 2∗105;
保证每组数据至少存在一种合法操作。
输入
6
5
00000
01110
5
01000
01110
6
111111
100001
7
0001000
0111110
1
0
1
5
00010
01110
输出
2 4 1
-1
2 5 0
2 6 1
1 1 1
-1
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册