作成日 2025年4月27日日曜日
更新日 2025年4月27日日曜日
https://atcoder.jp/contests/abc403
sum(a for i, a in enumerate(A) if i % 2 == 0)def main():
N = int(input())
A = [int(a) for a in input().split()]
res = solve(N, A)
print(res)
def solve(N: int, A: list[int]) -> int:
return sum(a for i, a in enumerate(A) if i % 2 == 0)
if __name__ == "__main__":
main()
def main():
T = input()
U = input()
res = solve(T, U)
print("Yes" if res else "No")
def solve(T: str, U: str) -> bool:
for i in range(len(T) - len(U) + 1):
for j, u in enumerate(U):
if T[i + j] != "?" and T[i + j] != u:
break
else:
return True
return False
if __name__ == "__main__":
main()
setで管理setに追加するのは非効率なので、任意の値を使う(本番の実装ではNoneにした)def main():
N, M, Q = map(int, input().split())
queries = [list(map(int, input().split())) for _ in range(Q)]
res = solve(N, M, Q, queries)
for r in res:
print("Yes" if r else "No")
def solve(N: int, M: int, Q: int, queries: list[list[int]]) -> list[bool]:
mem: list[set[int] | None] = [set() for _ in range(N)]
res = []
for t, *query in queries:
if t == 1:
X, Y = query
m = mem[X - 1]
if m is not None:
m.add(Y - 1)
elif t == 2:
(X,) = query
mem[X - 1] = None
elif t == 3:
X, Y = query
m = mem[X - 1]
res.append(m is None or Y - 1 in m)
return res
if __name__ == "__main__":
main()
N - len(set(A))
dp[b][is_delete]=(要素bまで見て、要素bを削除するかがis_deleteのときの削除する最小個数) と定義するdp[a] = [0, cnt(a)]dp[b+D][0] = dp[b][1]dp[b+D][1] = min(dp[b][0], dp[b][1]) + cnt(b+D)min(dp[a+D+D+...][0], dp[a+D+D+...])def main():
N, D = map(int, input().split())
A = [int(a) for a in input().split()]
res = solve(N, D, A)
print(res)
def solve(N: int, D: int, A: list[int]) -> int:
if D == 0:
return N - len(set(A))
cnt: dict[int, int] = {}
for a in A:
cnt[a] = cnt.get(a, 0) + 1
mem: set[int] = set()
res = 0
for a in sorted(cnt):
if a in mem:
continue
dp = [0, 0]
while a in cnt:
dp[0], dp[1] = min(dp[0], dp[1]) + cnt[a], dp[0]
a += D
mem.add(a)
res += min(dp)
return res
def solve_gu(N: int, D: int, A: list[int]) -> int:
"""デバッグ時に利用した愚直解"""
res = N
for i in range(1 << N):
mem = set()
r = 0
for j in range(N):
if (i >> j) & 1:
a = A[j]
if (a - D) in mem:
break
if (a + D) in mem:
break
mem.add(a)
else:
r += 1
else:
res = min(res, r)
return res
if __name__ == "__main__":
main()