Skip to content

Instantly share code, notes, and snippets.

def isdif(c, x):
return 0 if c == x else 1
T = int(input())
for _ in range(T):
N = int(input())
S = list(map(int, input()))
dp = [[float("inf")] * 3 for _ in range(N + 1)]
dp[0][0] = dp[0][1] = dp[0][2] = 0
import sys
sys.setrecursionlimit(10**9)
def dfs(i):
global ans, domino
if i == H * W:
score = 0
for y in range(H):
H, W, N = map(int, input().split())
row = [set() for _ in range(H + 1)]
col = [set() for _ in range(W + 1)]
for _ in range(N):
x, y = map(int, input().split())
row[x].add(y) # x行目のy列目にゴミがある
col[y].add(x) # y列目のx行目にゴミがある。
Q = int(input())
for _ in range(Q):
from collections import deque
H, W = map(int, input().split())
S = [list(input()) for _ in range(H)]
ans = [row[:] for row in S]
dist = [[float("inf")] * W for _ in range(H)]
dq = deque()
for y in range(H):
for x in range(W):
@maehrm
maehrm / wintercup_8year_analysis.md
Created December 20, 2025 07:52
データで見る8年間のウインターカップの変化:身長からスキルへの転換(2018-2025年完全分析)

データで見る8年間のウインターカップの変化:身長からスキルへの転換

全国高等学校バスケットボール選手権大会(ウインターカップ)の公式データを元に、2018年から2025年までの8年間を徹底分析。日本の高校バスケットボール界が「身長依存」から「スキル重視」へと大きく舵を切った歴史的転換期を検証します。

データソース: 全データはこちらのGistから参照可能です(2015-2025年の完全な記録)

1. 平均身長の推移:劇的な変化の7年間

1-1. 数字で見る変化

@maehrm
maehrm / hakone_ekiden_5years_analysis.md
Last active December 20, 2025 08:00
箱根駅伝5年間の総括:ハーフマラソン予測の真実(第97回〜第101回 / 2021-2025)データ分析

箱根駅伝5年間の総括:ハーフマラソン予測の真実

第97回〜第101回(2021-2025)完全データ分析

正月の風物詩・箱根駅伝。毎年、大会前には「ハーフマラソン平均タイム」による順位予測が行われます。しかし、この予測は本当に当たるのでしょうか?

本記事では、第97回〜第101回(2021-2025年)の5年間の完全データを分析し、予測精度の実態と、なぜ予測が外れるのかを徹底検証します。

データソース: 全データはこちらのGistから参照可能です

箱根駅伝5年間総括分析

N, M = map(int, input().split())
C = list(map(int, input().split()))
zoo = [[] for _ in range(N)] # i番目の動物園で見ることができる動物
for i in range(M):
_, *a = list(map(int, input().split()))
a = list(map(lambda x: int(x) - 1, a))
for j in a:
zoo[j].append(i)
M = 10**6 + 1
N, D = map(int, input().split())
A = list(map(int, input().split()))
cnt = [0] * M
for x in A:
cnt[x] += 1
if D == 0:
print(sum(max(x - 1, 0) for x in cnt))
exit()
from collections import defaultdict
N, M = map(int, input().split())
d = defaultdict(int)
for _ in range(M):
A, B = map(int, input().split())
d[(A + B) % N] += 1
ans = M * (M - 1) // 2
for _, v in d.items():
ans -= v * (v - 1) // 2
def calc_dp(s):
# dp[i][0] : s[0..i-1] の文字列で、末尾を '.' にした場合の o の最大数
# dp[i][1] : s[0..i-1] の文字列で、末尾を 'o' にした場合の o の最大数
dp = [[-float("inf")] * 2 for _ in range(N + 1)]
dp[0][0] = 0
for i in range(N):
if s[i] != "o":
dp[i + 1][0] = max(dp[i][0], dp[i][1])
if s[i] != ".":
dp[i + 1][1] = dp[i][0] + 1