본문으로 이동
코드패스 by Devin.KR

문제 4261 · 킬로 V

관측 기록의 보정 묶음

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 날씨 관측소는 N일 동안 수집한 관측 기록을 보관하고 있다. 각 날짜의 기록에는 그날 센서가 흔들린 정도를 나타내는 정수 등급 A_i가 붙어 있다. 등급은 보정 작업의 비용을 계산할 때만 사용하며, 보정 작업을 수행해도 원래 등급은 바뀌지 않는다. 관측소는 모든 날짜의 기록을 보정한 뒤 하나의 자료로 공개하려고 한다. 보정 장치는 두 가지 방식으로 실행할 수 있다. 첫 번째 방식은 하루의 기록만 보정하는 단일 작업이다. 어느 날짜를 선택하더라도 단일 작업의 비용은 C이다. 두 번째 방식은 날짜가 연속한 이틀의 기록을 한꺼번에 보정하는 연결 작업이다. i일과 i+1일을 연결 작업으로 보정하면 비용은 B+|A_i-A_{i+1}|이다. 여기서 두 등급의 차이는 큰 값에서 작은 값을 뺀 값이다. 모든 날짜는 정확히 하나의 작업에 포함되어야 한다. 어떤 날짜를 단일 작업으로 보정했다면 그 날짜를 연결 작업에 다시 포함할 수 없다. 서로 다른 연결 작업도 날짜를 공유할 수 없다. 하루를 건너뛴 두 날짜를 연결하거나, 사흘 이상의 기록을 한 번의 작업으로 처리하는 것은 허용하지 않는다. 첫날과 마지막 날은 서로 연속한 날짜로 취급하지 않는다. 작업을 실제로 실행하는 순서는 총비용에 영향을 주지 않는다. 각 작업의 비용은 그 작업에 포함된 날짜와 입력으로 주어진 값만으로 결정되며, 전체 비용은 선택한 모든 작업 비용의 합이다. 연결 작업의 비용이 두 번의 단일 작업 비용보다 크더라도 연결 작업 자체가 금지되는 것은 아니다. 반대로 연결 작업이 저렴하더라도 다른 날짜와의 조합까지 고려해야 한다. 관측소가 모든 날짜의 기록을 빠짐없이 보정하는 데 필요한 최소 총비용을 구해야 한다. 최소 비용을 만드는 방법이 여러 개이면 그 비용만 출력한다. 모든 날짜에 단일 작업을 적용할 수 있으므로 가능한 방법은 항상 존재한다.

입력

첫째 줄에 날짜 수 N, 단일 작업 비용 C, 연결 작업의 기본 비용 B가 공백으로 구분되어 주어진다. 둘째 줄에 날짜순으로 N개의 등급 A_1, A_2, …, A_N이 주어진다. 모든 입력값은 정수이며, 1≤N≤190,000, 1≤C≤1,000,000,000, 1≤B≤1,000,000,000, 0≤A_i≤9이다.

출력

모든 날짜를 정확히 한 번씩 보정하는 최소 총비용을 한 줄에 정수로 출력한다.

예제 입력 1

5 7 5
1 2 8 8 3

예제 출력 1

18

예제 입력 2

4 3 10
0 9 0 9

예제 출력 2

12

예제 입력 3

1 4 1
9

예제 출력 3

4
힌트 펼치기
  • 앞에서부터 i일의 기록을 모두 보정하는 최소 비용을 생각한다.
  • 마지막 작업이 하루를 처리하는 경우와 이틀을 처리하는 경우로 나눈다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류동적 계획법

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)