#GDCPCA. 字符修改

字符修改

问题描述

给您一个长度为 NN 的字符串 SS ,由 01 组成。

01 组成的长度为 NN 的字符串 TT 是好字符串,当且仅当它满足以下条件:

  • 恰好有一个整数 i(1iN1)i(1≤i≤N-1) ,满足第 ii 和第 (i+1)(i+1) 个字符相同。

对于每个 i=1,2,,Ni=1,2,…,N,您可以选择是否执行一次以下操作:

  • 如果 SS 的第 ii 个字符是 0,将其替换为 1,反之亦然。此操作(如果执行)的成本为 CiC_i

问,使 SS 成为好字符串所需的最小总成本。

输入格式

第一行是一个整数 NN,第二行是一个字符串 SS,第三行有 NN 个数,第 ii 个数 CiC_i 表示替换第 ii 个数的成本。

  • 2N2×1052≤N≤2×10^5
  • SS 是一个长度为 NN 的字符串,仅含 01
  • 1Ci1091≤C_i​≤10^9
  • NNCiC_i​ 都是整数

输出格式

输出使 SS 成为好字符串所需的最小总成本。

5
00011
3 9 2 6 4
7

对 i=1,5 执行该操作,而对 i=2,3,4 不执行该操作,则会生成 S= 10010,这是一个好的字符串。在这种情况下产生的成本是 7 ,并且不可能使 S 成为低于 7 的好字符串,因此输出 7 。

4
1001
1 2 3 4
0
11
11111100111
512298012 821282085 543342199 868532399 690830957 973970164 928915367 954764623 923012648 540375785 925723427
2286846953