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

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

막대 자르기

면접 대비

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

요약
여러 막대 중 일부를 잘라 길이 1인 조각을 K개 이상 얻을 때, 잘린 막대마다 a*(L-1)^2 + b의 비용이 들며 이 총비용의 최솟값을 구한다.
난이도

보통10점 중 6점

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

문제

Albert는 공작소를 운영한다. 오늘은 고객이 NN개의 공작용 나무 막대를 가져왔는데 ii번째 막대의 길이를 S_iS\_i라 하자. 고객은 길이가 11인 막대가 총 KK개 필요한데, 자신이 가져온 막대를 필요한만큼 적절히 잘라주기 바란다. 이 공작용 막대는 특수 기계를 이용해서만 자를 수 있는데, 길이가 L≥2L \ge 2 인 막대를 넣으면 아주 정밀하게 LL개의 길이 11인 막대로 잘라주는 대신 길이에 비례하여 큰 비용이 발생한다. 구체적으로, 길이가 LL인 막대를 넣으면 발생하는 비용은 a⋅(L−1)2+ba \cdot (L - 1)^2 + b 이고 a,b≥0a, b \ge 0 이다.

예를 들어 N=3N = 3, K=8K = 8, S=\[8,4,4]S = \[8, 4, 4], a=1a = 1, b=0b = 0 이라 하자.

  • 모든 막대를 다 자르면 총 16개의 길이 1짜리 막대를 얻을 수 있고, 비용은 72+32+32=677^2 + 3^2 + 3^2 = 67 이다 - 이 방법은 고객의 요구를 만족시키긴 하지만 가장 비싼 방법이다.
  • 길이가 8인 막대 하나만 자르면 총 8개의 길이 1짜리 막대를 얻을 수 있고, 비용은 49이다.
  • 길이가 4인 막대 두 개를 자르면 총 8개의 길이 1짜리 막대를 얻을 수 있고, 비용은 18이다 - 이 방법이 가장 싼 방법이다.

다른 예로 N=4N = 4, K=9K = 9, S=\[3,4,5,6]S = \[3, 4, 5, 6], a=1a = 1, b=0b = 0 이라 하자.

  • 모든 막대를 다 자르면 고객의 요구를 만족시키지만 비용이 22+32+42+52=542^2 + 3^2 + 4^2 + 5^2 = 54로 가장 비싸다.
  • 길이가 3인 막대와 6인 막대를 자르면 22+52=292^2 + 5^2 = 29의 비용을 내고 총 9개의 막대를 얻을 수 있다.
  • 길이가 4인 막대와 5인 막대를 자르면 32+42=253^2 + 4^2 = 25의 비용을 내고 총 9개의 막대를 얻을 수 있다.

입력으로 NN, KK, aa, bb, 그리고 SS가 주어졌을 때, KK개 이상의 길이 1인 막대기를 얻기 위해 최소로 필요한 비용을 계산해보자.

입력

입력 첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 NN, KK, aa, bb가 공백으로 구분되어 주어진다. 둘째 줄에는 막대기의 길이인 배열 SS가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

제한

  • 1≤T≤201 \le T \le 20
  • 1≤N≤1001 \le N \le 100
  • 0≤a,b≤1060 \le a, b \le 10^6
  • 1≤i≤N1 \le i \le N인 ii에 대하여: 1≤S_i≤1001 \le S\_i \le 100
  • 1≤K≤∑_i=1NS_i1 \le K \le \sum\_{i=1}^{N} S\_i

예제1

  1. 예제 1

    입력
    6
    3 8 1 0
    8 4 4
    4 9 1 0
    3 4 5 6
    6 2 2 5
    1 2 3 1 2 3
    6 8 2 5
    1 2 3 1 2 3
    6 10 2 5
    1 2 3 1 2 3
    6 4 0 1
    3 3 3 3 3 3
    
    예상 출력
    18
    25
    0
    26
    33
    2