#P1075. 地铁

地铁

题目描述

乘坐地铁已经成为很多人的日常出行方式,现在核桃国正在修地铁,地铁北起核桃山林,南至山核桃林,所经地形多样,现在小核桃要在地下挖一个通道用于修建地铁。

通道可以理解成在 xx 轴的一条线段 [0,n][0,n]。对于这条线段,我们分成 nn 个部分,每一部分为 (x,x+1)(x,x+1),其中 xx00n1n-1 之间(含端点)的整数。由于种种原因,通道只能建在两个高度上,这两个高度为 1122。有一些段上要修地铁或者地铁配套设施,所以这些通道只能在高度 22 上,否则在高度 11 或高度 22 上均可。我们用一个长为 nn0101 字符串 ss 表示,第 ii 个字符就表示第 ii 段通道的情况,如果 sis_i0,就说明这段通道在高度 1122 均可,如果 sis_i1,就说明这段管线必须位于高度 22

修通道是要钱的,修每单位通道价格都是 aa 元,通道是连续的,如果相邻段通道高度不同,就要修建一个折线形的通道,如下图所示:

黑色字体的 001000 表示的是每一段通道的要求,也就是说第三段必须修建在高度 2,其余位置修建在高度 1 或 2 均可,图中仅表示一种可行的修建方案,修建方案并不唯一。

对于每个整数点处的通道,都需要焊接起来(蓝色的拐点是被小核桃用可靠的 502 胶水粘上的,成本忽略不计),在高度 11 上焊接需要 bb 元,在高度 22 上焊接需要 cc 元。例如上图,焊接点(用橙色标出)为 A,B,E,F,I,L,MA,B,E,F,I,L,M,总花费为 9a+3b+4c9a+3b+4c

给定每一段通道的情况,请求出修建一段符合要求的通道的最小花费。

输入格式

第一行四个整数 n,a,b,cn,a,b,c,表示通道的段数,修一个单位长度通道的花费,在高度 11 焊接通道的花费和在高度 22 焊接通道的花费。

第二行一个长度为 nn0101 字符串 ss,表示这 nn 个部分的管线情况。

输出格式

输出一行一个整数,表示修建通道的最小花费。

8 2 5 10
00110010
94

样例解释

一种最优建造方案如上图。

数据规模与约定

本题共 2020 个测试点,每个测试点 55 分。

对于 10%10\% 的测试数据,si=0s_i=0

对于另 10%10\% 的测试数据,s1=sn=0,si=1 (i1,in)s_1=s_n=0,s_i=1\ (i\neq1,i\neq n)

对于另 30%30\% 的测试数据,n20n\le 20

对于 100%100\% 的测试数据,2n2×105,1a,b,c1092\le n\le 2\times 10^5,1\le a,b,c\le 10^9,保证 s1=sn=0s_1=s_n=0