이차 정수 계획 문제
시간 제한2초메모리 제한1024 MB
각 원소가 주어진 구간에 들고 두 원소의 차이가 제한되는 정수 수열 가운데, 질의마다 주어진 가중치로 최대 무게를 구합니다.
문제
이 문제는 잘 알려진 NP 문제인 이차 정수 계획 문제를 푸는 것이다.
이차 정수 계획 문제에는 변수가 있다. 아래 조건을 모두 만족하는 길이 의 정수 수열 을 구해야 한다.
이차 정수 계획 문제에는 제약 조건도 있다. 주어진 수열은 다음 두 종류의 제약 조건을 모두 만족해야 한다.
- 양의 정수 ()와 개의 구간 ()가 주어진다. 이때 이다. 모든 에 대해 를 만족해야 한다.
- 개의 세 쌍 가 주어진다. 모든 에 대해 를 만족해야 한다.
목적 함수도 있다. 가중치 (개)이 주어진다. 는 수열에서 값이 인 원소의 개수이다. 는 을 만족하는 순서쌍 의 개수이며, 이다. 이면 와 는 서로 다른 쌍으로 센다. 수열 의 가중치는 다음과 같다.
제약 조건을 만족하는 수열 가운데 가중치가 최대인 것을 찾아야 한다.
이차 정수 계획 문제에서 질의가 여러 번 필요한 것은 아니지만, 이 문제에서는 개의 질의가 주어진다. 각 질의마다 가중치 이 다르게 주어지며, 그때마다 제약을 만족하는 최대 가중치 수열을 찾아야 한다. 출력을 줄이기 위해 그 수열의 가중치만 출력하면 된다. 데이터에는 조건을 만족하는 수열이 적어도 하나 존재함이 보장된다.
입력
여러 개의 테스트 데이터가 주어진다. 첫 줄에는 테스트 케이스 번호 와 데이터 세트의 개수 가 주어진다. 이면 해당 데이터 세트는 예제이다.
각 테스트 케이스는 다음과 같이 주어진다.
- 첫 줄에 정수 가 주어진다. 각각 수열의 값 범위, 수열의 길이, 변수 사이 제약의 개수, 질의의 개수이다.
- 다음 개 줄에 정수 , 가 주어진다. 번째 원소의 값 범위이다.
- 다음 개 줄에 정수 , , 가 주어진다. 한 쌍의 변수에 대한 제약이다.
- 다음 개 줄에 각각 개의 음이 아닌 정수 이 주어진다. 한 질의의 가중치 매개변수이다.
출력
각 데이터 세트의 각 질의마다 최대 가중치를 한 줄에 출력한다.
제한
는 한 테스트 포인트 안에 있는 모든 데이터 세트의 를 합한 값이다. 모든 테스트 포인트에 대해 다음이 성립한다.
- 번째 () 테스트 데이터에서
- , , ,
- ,
- 특수 조건 A: 이다.
- 특수 조건 B: 이고, 한 테스트 포인트의 모든 데이터 세트에 걸친 의 합은 을 넘지 않는다.
- 특수 조건 C: 데이터는 무작위로 생성된다. 각 데이터 세트마다 먼저 매개변수 와 인 음이 아닌 정수 을 정한다. 그다음 다음 규칙으로 데이터를 만든다.
- 각 에 대해 를 독립적으로 균등하게 뽑는다. , 로 둔다.
- 세 쌍이 개가 될 때까지 다음을 반복한다.
- 을 독립적으로 균등하게 뽑는다.
- 를 가중치로 하여 를 뽑는다. 에 대해 일 확률은 이다.
- 를 추가하면 유효한 수열이 없어지면 이 세 쌍을 버린다. 그렇지 않으면 추가한다.
- 각 질의의 은 에서 독립적으로 균등하게 뽑는다.