몬스터 경로 (라지)

격자에서 정확히 S걸음을 걸으며 각 칸의 몬스터를 방문 시 확률 P 또는 Q로 잡을 때, 잡는 몬스터 수의 기댓값을 최대로 만든다.

어려움8동적 계획법비트 연산그래프수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

코드자몬은 몬스터 조련사가 현실 세계를 돌아다니며 몬스터를 잡는 모바일 게임이다. 당신이 쓰는 휴대폰은 낡아서 배터리가 금방 닳는다. 몬스터를 최대한 많이 잡으려면 이동 경로를 신중하게 골라야 한다.

코드자몬 세계는 RRCC열짜리 격자다. 행 번호는 위에서 아래로 00부터 매기고, 열 번호는 왼쪽에서 오른쪽으로 00부터 매긴다. 당신은 RsR_sCsC_s열 칸에서 출발해 정확히 SS번 이동한다. 한 번의 이동으로는 지금 있는 칸과 변을 맞댄 칸으로만 갈 수 있다. 꼭짓점만 맞댄 칸으로는 갈 수 없다.

아직 몬스터를 잡지 못한 칸으로 들어가면 그 칸의 몬스터를 잡는 시도를 한다. 그 칸에 몬스터 유인기가 있으면 확률 PP로 잡고, 없으면 확률 QQ로 잡는다. 한 번 잡은 몬스터는 사라지므로 그 칸에서는 다시 잡을 수 없다. 잡지 못했다면 나중에 그 칸에 다시 들어갔을 때 또 시도한다. 출발 칸은 특별하다. 첫 이동을 하기 전에는 출발 칸의 몬스터를 잡을 기회가 없다.

이동을 시작하기 전에 경로를 최적으로 계획한다고 할 때, 잡는 몬스터 수의 기댓값이 최대 얼마인지 구하라.

R=1R = 1이고 C=1C = 1이면 이동할 수 있는 칸이 하나도 없다. 이때는 SS11 이상이어도 기댓값이 00이다.

입력

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

각 테스트 케이스의 첫 줄에는 정수 다섯 개 RR, CC, RsR_s, CsC_s, SS가 공백으로 구분되어 주어진다. RRCC는 격자의 행 수와 열 수, RsR_sCsC_s는 출발 칸의 행 번호와 열 번호, SS는 이동 횟수다.

그다음 줄에는 소수 PPQQ가 주어진다. PP는 몬스터 유인기가 있는 칸에서 몬스터를 잡을 확률이고, QQ는 유인기가 없는 칸에서 잡을 확률이다. 두 값 모두 소수점 아래 넷째 자리까지 정확히 주어진다.

그다음 RR개의 줄에는 각각 문자 CC개가 공백으로 구분되어 주어진다. ii번째 줄의 jj번째 문자는 iijj열 칸을 뜻한다. 각 문자는 유인기가 없는 칸을 뜻하는 . 또는 유인기가 있는 칸을 뜻하는 A 중 하나다.

제한

  • 1T1001 \le T \le 100
  • 1R201 \le R \le 20
  • 1C201 \le C \le 20
  • 0Rs<R0 \le R_s < R
  • 0Cs<C0 \le C_s < C
  • 0Q<P10 \le Q < P \le 1
  • 0S90 \le S \le 9

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx11부터 시작하는 테스트 케이스 번호이고, yy는 잡는 몬스터 수의 기댓값의 최댓값이다.

yy는 소수점 아래 여덟째 자리에서 반올림해 소수점 아래 자릿수가 정확히 일곱 개가 되도록 출력한다. 값이 정수여도 2.0000000처럼 일곱 자리를 모두 적는다. 반올림 결과가 갈리는 입력, 즉 정답이 반올림 경계에 정확히 걸리는 입력은 주어지지 않는다.

설명

첫 번째 예제의 첫 테스트 케이스에서 최적 경로 하나는 (0,0)(0,1)(0,2)(1,2)(2,2)(2,3)(0,0) \to (0,1) \to (0,2) \to (1,2) \to (2,2) \to (2,3)이다. 이 경로에서 잡는 몬스터 수의 기댓값은 0.2+0.2+0.2+0.8+0.2=1.60.2 + 0.2 + 0.2 + 0.8 + 0.2 = 1.6이다. 첫 이동을 하기 전에는 몬스터를 잡을 기회가 없으므로 확률을 여섯 개가 아니라 다섯 개만 더한다.

같은 예제의 두 번째 테스트 케이스에서 최적 경로 하나는 (9,1)(9,2)(8,2)(8,3)(8,2)(9,1) \to (9,2) \to (8,2) \to (8,3) \to (8,2)이다. 기댓값은 0.1+0.6121+0.1+0.23743359=1.049533590.1 + 0.6121 + 0.1 + 0.23743359 = 1.04953359이고, 출력 형식에 맞춰 반올림하면 1.04953361.0495336이다. 마지막 항 0.237433590.23743359(8,2)(8,2)에 두 번째로 들어갈 때 그 칸에 몬스터가 아직 남아 있을 확률 10.61211 - 0.6121에 잡을 확률 0.61210.6121을 곱한 값이다.