結果
| 問題 |
No.2222 Respawn
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-02-17 23:07:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 145 ms / 2,000 ms |
| コード長 | 1,695 bytes |
| コンパイル時間 | 178 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 95,616 KB |
| 最終ジャッジ日時 | 2024-07-19 14:18:56 |
| 合計ジャッジ時間 | 4,061 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
import sys,random,bisect
from collections import deque,defaultdict
from heapq import heapify,heappop,heappush
from itertools import permutations
from math import gcd,log
input = lambda :sys.stdin.readline().rstrip()
mi = lambda :map(int,input().split())
li = lambda :list(mi())
N = int(input())
S = input().rstrip()
S += "#"
dp = [10**15] * N
dp[N-1] = 0
dp_save = [0] * N
dp_save_p = [0] * N
dp_back_p = [0] * N
dp_back_e = [0] * N
for i in range(N-1)[::-1]:
if S[i]=="#":
continue
if i+1 <= N and S[i+1]==".":
if i+1 != N-1:
dp_back_p[i] += dp_back_p[i+1]/3
dp_back_e[i] += (dp_back_p[i+1]+dp_back_e[i+1])/3
dp_save[i] += 1/9 * (2+dp[i+1]) + 1/3 * (dp_save_p[i+1]+dp_save[i+1])
dp_save_p[i] += 1/9 + 1/3 * dp_save_p[i+1]
else:
dp_save[i] += 1/3
dp_save_p[i] += 1/3
elif i+1 <= N:
dp_back_p[i] += 1/3
dp_back_e[i] += 1/3
if i+2 <= N and S[i+2]==".":
if i+2 != N-1:
dp_back_p[i] += dp_back_p[i+2]/3
dp_back_e[i] += (dp_back_p[i+2]+dp_back_e[i+2])/3
dp_save[i] += 1/9 * (2+dp[i+2]) + 1/3 * (dp_save_p[i+2]+dp_save[i+2])
dp_save_p[i] += 1/9 + 1/3 * dp_save_p[i+2]
else:
dp_save[i] += 1/3
dp_save_p[i] += 1/3
elif i+2 <= N:
dp_back_p[i] += 1/3
dp_back_e[i] += 1/3
"""
dp[i] = 1/3 * (1+dp[i]) + dp_save[i] + dp_back_p[i] * dp[i] + dp_back_e[i]
"""
#print(dp_save[i],dp_back_e[i],dp_back_p[i])
#print(dp_save_p[i]+dp_back_p[i])
dp[i] = (1/3+dp_save[i]+dp_back_e[i]) / (2/3-dp_back_p[i])
#print(dp[i])
print(dp[0])