D. 零一串·困难

    传统题 文件IO:bits 3000ms 512MiB

零一串·困难

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

题目描述

Tom 给了 33DAI 两个长度为 nn 的 0101 串 aa 与 bb(下标从 11 开始)。33DAI 可以操作 aa 任意多次(包括零次):

每次操作选取两个下标 l<rl < r(1≤l<r≤n1 \le l < r \le n),同时翻转 ala_l 与 ara_r。一次操作的代价只取决于两个下标是否相邻:若 r=l+1r = l + 1,代价为 xx;否则代价为 yy。xx 与 yy 的大小关系没有限制。

求把 aa 变成 bb 所需的最小总代价。如果无法做到,输出 −1-1。

输入格式

从文件 bits.in 读入数据。

输入的第一行包含一个正整数 tt,表示测试数据组数。

接下来依次给出 tt 组数据,每组数据的格式为:

第一行包含三个整数 n,x,yn, x, y,分别表示串长与两种操作的代价。

第二行包含一个长度为 nn 的仅由 0、1 组成的字符串 aa。

第三行包含一个长度为 nn 的仅由 0、1 组成的字符串 bb。

输出格式

输出到文件 bits.out。

对于每组数据,输出一行一个整数:把 aa 变成 bb 的最小总代价;若无法做到,输出 −1-1。

6
5 8 9
01001
00101
6 2 11
000001
100000
5 7 2
01000
11011
7 8 3
0111001
0100001
6 3 4
010001
101000
5 10 1
01100
01100
8
10
-1
6
7
0

样例 1 解释

第一组数据:aa 与 bb 只有第 2,32, 3 位不同。对下标对 (2,3)(2, 3) 做一次相邻操作, aa 就变成了 bb,代价为 x=8x = 8。

第二组数据:aa 与 bb 在第 1,61, 6 位不同。依次对下标对 (1,2)(1,2)、(2,3)(2,3)、(3,4)(3,4)、(4,5)(4,5)、(5,6)(5,6) 各做一次相邻操作(第 2,3,4,52,3,4,5 位各被翻转两次、不受影响),aa 就变成了 bb,总代价为 5x=105x = 10。

第三组数据:答案是 −1-1,即不存在把 aa 变成 bb 的操作方案。

第四组数据:aa 与 bb 在第 3,43, 4 位不同,这里 x=8, y=3x = 8,\ y = 3。 对下标对 (3,6)(3, 6) 与 (4,6)(4, 6) 各做一次不相邻操作(两次都满足 r>l+1r > l + 1): 第 3,43, 4 位各被翻转一次,第 66 位被翻转两次而抵消,aa 就变成了 bb,总代价为 2y=62y = 6。

第五组数据:aa 与 bb 在第 1,2,3,61, 2, 3, 6 位不同,这里 x=3, y=4x = 3,\ y = 4。 对下标对 (1,2)(1, 2) 做一次相邻操作(代价 x=3x = 3),再对下标对 (3,6)(3, 6) 做一次不相邻操作 (代价 y=4y = 4),aa 就变成了 bb,总代价为 77。

第六组数据:两个串已经完全相同,不需要做任何操作。

样例 2

见 bits2.in 与 bits2.ans。

样例 3

见 bits3.in 与 bits3.ans。

数据范围

对于所有测试数据,保证:

  • 1≤t≤10001 \le t \le 1000;
  • 5≤n≤50005 \le n \le 5000;
  • 1≤x,y≤1091 \le x, y \le 10^9;
  • aa 与 bb 均只由字符 0、1 组成,长度均为 nn;
  • 单个测试文件中所有测试用例的 nn 之和不超过 50005000。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤8n \le 8
7∼127 \sim 12 y≤xy \le x
13∼2013 \sim 20 4040 x<yx < y

每个测试点单独评分,全部测试点的得分之和即为本题得分。

【评测】三三信奥国庆模拟赛 CSP-S 第二场

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-10-2 8:30
结束于
2026-10-5 8:30
持续时间
3.5 小时
主持人
参赛人数
32