結果
| 問題 | No.3615 Ge Gusser |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-08-06 15:41:07 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 1,243 ms / 3,000 ms |
| + 587µs | |
| コード長 | 519 bytes |
| 記録 | |
| コンパイル時間 | 227 ms |
| コンパイル使用メモリ | 95,984 KB |
| 実行使用メモリ | 182,272 KB |
| 最終ジャッジ日時 | 2026-08-06 15:41:17 |
| 合計ジャッジ時間 | 9,798 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サンプル | 0 % | AC * 3 |
| 小課題1 | 40 % | AC * 8 |
| 小課題2 | 40 % | AC * 15 |
| 小課題3 | 20 % | AC * 27 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
N, M = map(int, input().split())
S = [int(input().replace("o", "0").replace("x", "1"), 2) for i in range(N)]
ok = 0
for s in S:
ok |= s
dp = [False for i in range(2**N)]
pp = [0 for i in range(2**N)]
pp[0] = 1
ans = 0
for i in range(2**N):
t = 0
c = i.bit_count()
for j in range(N):
if (i >> j) & 1:
t |= S[j]
k = i ^ (1 << j)
if not dp[k]:
pp[i] += pp[k] / (N - c + 1)
if t == ok:
dp[i] = True
ans += c * pp[i]
print(ans)