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

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

점프하는 민호

시간 제한2초메모리 제한512 MB

요약
시작점에서 정수 직선의 모든 점에 도달하도록 점프 길이 카드를 최소 비용으로 사는 문제이며, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 정수론, 수학
정답자
아직 제출이 없습니다

문제

음의 정수, 00, 양의 정수로 나타낼 수 있는 무한히 긴 1차원 좌표가 있다. 민호는 이 좌표의 한 점에 서 있다.

민호 앞에는 카드 nn장을 파는 상점이 있다. ii번째 카드에는 길이 lil_i와 가격 cic_i가 적혀 있다. 민호가 cic_i원을 내고 이 카드를 사면, 임의의 점 xx에서 x−lix - l_i 또는 x+lix + l_i로 점프할 수 있다.

처음에 민호는 카드가 없어서 서 있던 자리에서 움직일 수 없다. 돈을 써서 카드를 사면 점프해서 다른 점으로 갈 수 있다.

민호는 카드를 몇 장 사서 이 좌표의 모든 점에 갈 수 있게 되기를 원한다. 모든 점에 갈 수 있는 경우가 존재하면, 되도록 적은 비용으로 카드를 사려고 한다.

카드를 사서 모든 점을 방문할 수 있는지 판단하고, 가능하면 그중 가장 적은 비용을 계산하는 프로그램을 작성하라.

입력

첫째 줄에 카드의 개수 nn (1≤n≤3001 \le n \le 300)이 주어진다.

둘째 줄에 카드 nn장의 길이 l1,l2,…,lnl_1, l_2, \ldots, l_n (1≤li≤1091 \le l_i \le 10^9)이 주어진다.

셋째 줄에 카드 nn장의 가격 c1,c2,…,cnc_1, c_2, \ldots, c_n (1≤ci≤1051 \le c_i \le 10^5)이 주어진다.

출력

카드를 몇 장 사서 모든 점에 갈 수 있는 경우가 존재하지 않으면 −1-1을 출력한다.

가능한 경우가 존재하면 필요한 비용 중 가장 작은 값을 출력한다.

예제4

  1. 예제 1

    입력
    3
    100 99 9900
    1 1 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5
    10 20 30 40 50
    1 1 1 1 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    7
    15015 10010 6006 4290 2730 2310 1
    1 1 1 1 1 1 10
    
    예상 출력
    6
    
  4. 예제 4

    입력
    8
    4264 4921 6321 6984 2316 8432 6120 1026
    4264 4921 6321 6984 2316 8432 6120 1026
    
    예상 출력
    7237