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

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

은행 강도

면접 대비

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

요약
잡힐 확률이 제한 미만으로 유지되도록 은행 부분집합을 골라 훔치는 금액 합을 최대화합니다.
난이도

보통10점 중 5점

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

문제

로이는 짧은 기간만 은행을 털고 대학의 편안한 자리로 물러날 생각이다. 몇 달 동안 은행마다 현금이 얼마나 있는지, 털었을 때 잡힐 위험이 얼마나 되는지 조사했다.

어머니 올라는 견딜 수 있는 위험의 한계를 정해 두었다. 로이는 은행을 원하는 대로 골라 털 수 있고 같은 은행은 최대 한 번만 턴다. 다만 잡힐 확률이 이 한계보다 반드시 작아야 한다. 은행마다 잡히는 사건은 서로 독립이므로 집합 SS에 속한 은행을 털면 잡힐 확률은 1−∏j∈S(1−Pj)1 - \prod_{j \in S} (1 - P_j)이다.

로이가 가져올 수 있는 금액의 최댓값을 구하라.

입력

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

각 테스트 케이스의 첫째 줄에는 실수 PP와 정수 NN이 주어진다. PP는 로이가 넘지 말아야 할 한계이고, NN은 그가 계획해 둔 은행의 수이다. 이어지는 NN개의 줄에는 정수 MjM_j와 실수 PjP_j가 주어진다. 은행 jj에는 MjM_j백만이 있고, 이 은행을 털 때 잡힐 확률은 PjP_j이다.

  • 0<T≤1000 < T \le 100
  • 0.0≤P≤1.00.0 \le P \le 1.0
  • 0<N≤1000 < N \le 100
  • 0<Mj≤1000 < M_j \le 100
  • 0.0≤Pj≤1.00.0 \le P_j \le 1.0
  • 입력의 모든 실수는 소수점 아래 두 자리 이하이다.

털린 은행은 곧바로 파산하므로 같은 은행을 두 번 털지 않는다.

출력

각 테스트 케이스마다 잡힐 확률을 PP보다 작게 유지하면서 가져올 수 있는 최대 금액을 백만 단위로 한 줄에 출력한다. 조건을 만족하는 선택이 없으면 0을 출력한다.

예제2

  1. 예제 1

    입력
    3
    0.04 3
    1 0.02
    2 0.03
    3 0.05
    0.06 3
    2 0.03
    2 0.03
    3 0.05
    0.10 3
    1 0.03
    2 0.02
    3 0.05
    
    예상 출력
    2
    4
    6
    
  2. 예제 2

    입력
    3
    0.05 1
    10 0.05
    0.05 1
    10 0.04
    0.00 1
    7 0.00
    
    예상 출력
    0
    10
    0