B. 零一串·简单

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

零一串·简单

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

题目描述

33DAI 要把 01 串 aa 变成 01 串 bb。

给定两个长度均为 nn 的 01 串 aa 与 bb,下标从 11 开始。

一次操作是:选择两个下标 l<rl < r(1≤l<r≤n1 \le l < r \le n),把 ala_l 与 ara_r 同时取反 (00 变成 11,11 变成 00)。

每次操作的代价只取决于两个下标是否相邻:

  • 若 r=l+1r = l + 1,代价为 xx;
  • 否则(r>l+1r > l + 1),代价为 yy。

操作可以进行任意多次,顺序不限。请你求出把 aa 变成 bb 所需的最小总代价; 如果无论如何都无法把 aa 变成 bb,输出 −1-1。

输入格式

从文件 binary.in 读入数据。

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

接下来依次给出 tt 组数据,每组数据占三行:

  • 第一行包含三个整数 nn、xx、yy,分别表示串的长度与两种操作的代价;
  • 第二行包含一个长度为 nn 的 01 串 aa;
  • 第三行包含一个长度为 nn 的 01 串 bb。

输出格式

输出到文件 binary.out。

对于每组数据,输出一行一个整数,表示最小总代价;若无解,输出 −1-1。

4
5 8 7
01001
00101
5 7 2
01000
11011
7 8 3
0111001
0100001
5 10 1
01100
01100
8
-1
6
0

样例 1 解释

第一组数据中 aa 与 bb 只有第 22、33 位不同,选取下标 22 与 33 做一次相邻操作, aa 就变成了 00101,与 bb 相同,代价为 x=8x = 8。

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

第三组数据可以这样操作:先选下标 33 与 66(代价 y=3y = 3),此时 aa 变成 0101011; 再选下标 44 与 66(代价 y=3y = 3),此时 aa 变成 0100001,与 bb 相同。总代价为 66。

第四组数据中 aa 已经等于 bb,不需要任何操作,代价为 00。

样例 2

见 binary2.in 与 binary2.ans。

样例 3

见 binary3.in 与 binary3.ans。

数据范围

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

  • 1≤t≤6001 \le t \le 600;
  • 5≤n≤30005 \le n \le 3000;
  • 1≤y≤x≤1091 \le y \le x \le 10^9;
  • 单个测试文件中所有测试用例的 nn 之和不超过 30003000。

子任务

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

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤8n \le 8
7∼127 \sim 12 aa 与 bb 不同的位置不超过 22 个
13∼2013 \sim 20 4040 无额外限制

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

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

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