아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

비트 변환 비용

시간 제한1초메모리 제한256 MB

요약
각 비트의 시작값과 목표값, 비용이 주어질 때, 비트 i를 뒤집으면 뒤집은 뒤 값이 1인 모든 비트 비용의 합을 지불한다. 목표 상태에 도달하는 최소 총비용을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

11번부터 nn번까지 번호가 붙은 비트 nn개가 있다. 비트 ii의 처음 값은 00 또는 11인 aia_i이고, 비용은 cic_i이다.

연산 한 번은 비트 ii를 하나 골라 그 값을 뒤집는다. 00은 11이 되고, 11은 00이 된다. 이 연산의 가격은 뒤집은 뒤에 값이 11인 모든 비트 jj의 cjc_j를 더한 값이다. 비트 ii가 11이 되었다면 그 비트의 비용 cic_i도 이 합에 들어간다.

어떤 비트든 원하는 순서로 몇 번이든 연산할 수 있다. 모든 ii에 대해 비트 ii의 값을 bib_i로 만드는 가격의 합 중 최솟값을 구하여라.

입력

첫째 줄에 비트의 개수 nn이 주어진다. (1≤n≤5 0001 \le n \le 5\,000)

둘째 줄에 각 비트의 비용 c1,c2,…,cnc_1, c_2, \dots, c_n이 주어진다. (1≤ci≤1091 \le c_i \le 10^9)

셋째 줄에 처음 값을 나타내는 길이 nn짜리 문자열 a1a2…ana_1 a_2 \dots a_n이 주어진다.

넷째 줄에 목표 값을 나타내는 길이 nn짜리 문자열 b1b2…bnb_1 b_2 \dots b_n이 주어진다.

출력

가격의 합 중 최솟값을 첫째 줄에 출력한다.

예제2

  1. 예제 1

    입력
    5
    5 2 6 1 5
    01110
    10011
    
    예상 출력
    21
    
  2. 예제 2

    입력
    6
    100 1 1 1 1 1
    111000
    100111
    
    예상 출력
    112