結果
問題 |
No.2003 Frog on Grid
|
ユーザー |
![]() |
提出日時 | 2025-05-14 12:52:09 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,532 bytes |
コンパイル時間 | 197 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 85,632 KB |
最終ジャッジ日時 | 2025-05-14 12:54:07 |
合計ジャッジ時間 | 6,406 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 TLE * 1 -- * 10 |
ソースコード
MOD = 998244353 H, W, K = map(int, input().split()) grid = [] for _ in range(H): grid.append(input().strip()) # Convert grid to 1-based indices dp = [[0] * (W + 2) for _ in range(H + 2)] row_pre = [[0] * (W + 2) for _ in range(H + 2)] pre = [[0] * (W + 2) for _ in range(H + 2)] # Initialize dp[1][1] if grid[0][0] == '.': dp[1][1] = 1 else: print(0) exit() row_pre[1][1] = dp[1][1] pre[1][1] = dp[1][1] for i in range(1, H + 1): for j in range(1, W + 1): if i == 1 and j == 1: continue if grid[i-1][j-1] == '#': dp[i][j] = 0 row_pre[i][j] = row_pre[i][j-1] pre[i][j] = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD continue T = i + j - K sum_less = 0 if T > 1: x_max = min(i, T - 2) for x in range(1, x_max + 1): y_max = min(j, T - x - 1) if y_max < 1: continue sum_less += row_pre[x][y_max] if sum_less >= MOD: sum_less -= MOD elif sum_less < 0: sum_less += MOD sum_less %= MOD current = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD total = (current - sum_less) % MOD dp[i][j] = total row_pre[i][j] = (row_pre[i][j-1] + dp[i][j]) % MOD pre[i][j] = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD print(dp[H][W] % MOD)