设灯珠状态串为 s,相邻权重为 w1,w2,…,wn−1。
题目要求在至多一次翻转一个连续段 [l,r] 后,使灯带的相融度最大。相融度定义为:
i=1∑n−1wi⋅[si=si+1]有一条由 n 个灯珠组成的灯带,每个灯珠仅有两种状态0 或 1。灯带上相邻灯珠之间的焊点具有权重wi(对应第i个灯珠与第i+1 个灯珠之间的焊点)。定义灯带的相融度为所有相邻灯珠状态相同的焊点权重之和。
你可以进行至多一次翻转操作:选择一个连续段 [l,r](1≤l≤r≤n),将该段内的每个灯珠状态 0 与 1互换(0↔1)。也可以不进行任何操作。请计算操作后灯带的相融度的最大值。
名词解释
第一行输入整数n(2≤n≤2×105),表示灯珠数量。
第二行输入一个长度为 n 的二进制字符串 s(字符仅为′0′或′1′),第 i个字符表示第i个灯珠的初始状态。
第三行输入n−1个整数 w1,w2,…,wn−1(1≤wi≤109),表示各相邻对之间的焊点权重。
输出一个整数,表示在进行至多一次翻转操作后,灯带的相融度最大值。
输入
5
01010
2 1 3 4
输出
7
说明
初始状态下任意相邻对状态均不同,相融度为0。若翻转连续段 [4,4],灯带变为01000,相邻对(3,4)与 (4,5) 状态相同,相融度为 3+4=7,这是最大值
输入
6
111000
1 2 3 4 5
输出
15
说明
初始相融度为1+2+4+5=12。若翻转连续段[1,3],灯带变为000000,所有相邻对状态相同,相融度为1+2+3+4+5=15,为最大值。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册