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

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

토트

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

요약
각 경기의 승·무·패 확률과 단일·이중·삼중 표시 개수가 정해진 복권 종류가 주어질 때, 예산 S 안에서 각 종류를 몇 장 살지 정해 기대 당첨금을 최대로 만든다.
난이도

어려움10점 중 8점

유형
동적 계획법, 확률, 그리디, 조합론
정답자
아직 제출이 없습니다

문제

오스탑은 리우에 도착하자마자 흰색 바지를 샀다. 그다음으로 한 일은 밀반입한 돈 전부를 현지 축구 토트에 탕진하는 것이었다.

주 챔피언십에서는 nn개의 경기가 열리며, 각 경기는 승리, 무승부, 패배의 세 가지 결과 중 하나를 가질 수 있다.

토트 티켓에는 모든 경기의 목록이 적혀 있다. 티켓을 산 직후 구매자는 각 경기에 어떤 결과에 베팅할지 표시해야 한다. 경기마다 결과 하나를 표시할 수도 있고(소위 "단식"), 두 결과를 표시할 수도 있으며("복식"), 세 결과를 모두 표시할 수도 있다("삼식").

여러 종류의 티켓이 판매된다. 티켓의 종류는 가격과 두 정수 ii, jj로 정의된다. 구매자는 티켓에 정확히 ii개의 복식, 정확히 jj개의 삼식, 정확히 n−i−jn-i-j개의 단식을 넣어야 한다. 단식, 복식, 삼식을 경기별로 어떻게 배분하고 어떤 결과에 베팅할지는 구매자가 선택할 수 있다.

구매자가 nn개 경기의 결과를 모두 맞히면, 그 승리 티켓에 대해 PP코인을 받는다. 운이 없었다면 아무것도 받지 못한다. 구매자는 티켓에 그 경기에서 실제로 일어난 결과가 표시되어 있을 때에만 그 경기의 결과를 맞힌 것이다.

도박의 악마 벨리알과 아는 사이인 덕분에 오스탑은 모든 경기의 결과가 무작위로 결정된다는 것을 안다. 오스탑은 모든 결과의 확률까지 알아냈다. 게다가 nn개 경기의 결과는 서로 독립적으로 결정된다는 것도 안다.

오스탑에게는 티켓에 쓸 수 있는 SS코인만 남아 있다. 단골이므로 오스탑은 가진 코인이 가격을 감당할 수 있는 한, 판매되는 각 종류의 티켓을 원하는 만큼 살 수 있다. 이제 남은 일은 상금의 기댓값이 최대가 되도록 돈을 현명하게 배분하는 것이다. 오스탑은 돌려받을 상금을 최대화하며, 티켓에 드는 비용이 얼마인지는 상관하지 않는다.

입력

입력 파일의 첫 줄에는 네 정수 nn, kk, SS, PP가 주어진다. nn은 경기의 수, kk는 티켓 종류의 수, SS는 오스탑이 가진 코인의 수, PP는 승리 티켓에 주어지는 코인의 수다(1≤n,k≤1001 \le n,k \le 100, 1≤S≤1061 \le S \le 10^6, 1≤P≤10181 \le P \le 10^{18}).

다음 nn개 줄에는 각 경기 결과의 확률이 주어진다. 이 중 ii번째 줄에는 소수점 이하 최대 8자리의 실수 x_ix\_i, y_iy\_i, z_iz\_i가 주어지며, 각각 ii번째 경기에서 승리, 무승부, 패배의 확률이다(0≤x_i,y_i,z_i≤10 \le x\_i, y\_i, z\_i \le 1, x_i+y_i+z_i=1x\_i + y\_i + z\_i = 1).

다음 kk개 줄에는 판매되는 티켓의 종류가 주어진다. 각 줄에는 세 정수 ii, jj, c_ijc\_{ij}가 주어진다. ii와 jj는 각각 그 종류의 티켓에 표시해야 하는 복식과 삼식의 수이고, c_ijc\_{ij}는 그 종류의 티켓 한 장의 가격이다(0≤i,j≤n0 \le i, j \le n, i+j≤ni+j \le n, 1≤c_ij≤1061 \le c\_{ij} \le 10^6).

출력

상금의 기댓값의 최댓값을 나타내는 실수 하나를 출력한다.

답의 절대 오차 또는 상대 오차는 10−910^{-9}를 넘지 않아야 한다.

힌트

첫 번째 예시에서 첫 번째 종류의 티켓은 단식만 허용한다. 두 경기 모두 승리를 표시하면 그 티켓은 40%의 확률로 당첨된다. 따라서 이 종류의 티켓 한 장에서 얻는 상금의 기댓값은 4이다.

두 번째 종류의 티켓에는 복식이 하나 있어야 한다. 이런 티켓을 가장 잘 쓰는 방법은 첫 번째 경기에 복식을 표시해 승리와 무승부에 베팅하고, 두 번째 경기에 단식을 표시해 승리에만 베팅하는 것이다. 그러면 티켓은 64%의 확률로 당첨되며, 평균 6.4코인의 상금을 준다.

오스탑에게는 10코인만 남아 있다. 각 종류의 티켓을 한 장씩 당첨시키는 것이 그가 할 수 있는 최선이다.

예제2

  1. 예제 1

    입력
    2 2 10 10
    0.5 0.3 0.2
    0.8 0.2 0
    0 0 4
    1 0 6
    
    예상 출력
    10.4
    
  2. 예제 2

    입력
    3 4 1000 10000
    1.0 0 0
    0.5 0.5 0
    0.3 0.4 0.3
    0 0 100
    1 0 200
    1 1 300
    1 2 400
    
    예상 출력
    32000