#CF1733D2. 零一串(困难版)

零一串(困难版)

零一串(困难版)

  • 时间限制:3 秒
  • 内存限制:512 MiB

题目描述

给定两个长度为 nn 的二进制字符串 aa 和 bb。你可以进行若干次操作(也可以不操作)。每次选择两个下标 l<rl<r,并同时翻转 ala_l 与 ara_r:

  • 若 l+1=rl+1=r,本次操作的代价为 xx;
  • 否则,本次操作的代价为 yy。

求使 aa 变为 bb 的最小总代价;若无法做到,输出 −1-1。

输入格式

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

每组测试:

  • 第一行三个整数 n,x,yn,x,y;
  • 第二行一个长度为 nn 的二进制字符串 aa;
  • 第三行一个长度为 nn 的二进制字符串 bb。

输出格式

对每组测试输出一行一个整数,表示最小总代价;无解时输出 −1-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

样例输出 1

8
10
-1
6
7
0

数据范围

对所有数据,1≤t≤10001\le t\le1000,5≤n≤50005\le n\le5000,1≤x,y≤1091\le x,y\le10^9,所有测试组的 nn 之和不超过 50005000。字符串仅含 0 和 1。

子任务编号 分值 特殊限制
1 30 每组测试中 ai≠bia_i\ne b_i 的位置不超过 1818 个
2 x≥yx\ge y
3 40 无特殊限制