概要
今回はABC298(2023年4月15日21:00 ~ 22:40)の参加記録について自分の実装と感想を記していこうと思う。
A問題
ポイント
- ダメな条件に引っかかっていないかどうかについて入力から判断
自分の実装
ABC_298_A.py
N = int(input())
S = input()
good = 0
bad = 0
for i in range(N):
if S[i] == 'o':
good += 1
elif S[i] == 'x':
bad += 1
if good >= 1 and bad == 0:
print("Yes")
else:
print("No")
B問題
ポイント
- 各インデックスの数字に関して、問題文と同様に回転操作を4回行った時に条件を満たしているかどうかを考える
自分の実装
ABC_298_B.py
N = int(input())
A = list(list(map(int, input().split())) for i in range(N))
B = list(list(map(int, input().split())) for i in range(N))
A_1_tile_count = []
# Aの配列中に1がどのインデックスに存在するかを判定
for i in range(N):
for j in range(N):
if A[i][j] == 1:
A_1_tile_count.append([i, j])
if len(A_1_tile_count) == 0:
print("Yes")
exit()
# 回転回数
for i in range(4):
# 条件を満たしているタイルの個数
count_same = 0
# 回転後のAの配列のインデックスがBのそれに一致しているかどうかを確認
for j in range(len(A_1_tile_count)):
x, y = A_1_tile_count[j][0], A_1_tile_count[j][1]
if B[x][y] == 1:
count_same += 1
# 条件を満たしている場合は終了
if count_same == len(A_1_tile_count) and j == len(A_1_tile_count) - 1:
print("Yes")
exit()
# 調査が終わった座標は回転
A_1_tile_count[j] = [N-1-y, x]
print("No")
C問題
ポイント
- 2個目、3個目の操作に対応するため、箱に入っている数字は
list
で、カードが入っている箱はset
で表示(なぜか後半のテストでWA
) -
set
についてもsorted
で昇順で並び替えることにしたらAC
できた(2023年5月30日追記)
自分の実装(コンテスト時)
ABC_298_C.py
N = int(input())
Q = int(input())
boxes = [[0] for i in range(N+1)]
box_nums = [set() for i in range(2*10**5 + 1)]
for i in range(Q):
query = list(map(int, input().split()))
if query[0] == 1:
boxes[query[2]].append(query[1])
box_nums[query[1]].add(query[2])
elif query[0] == 2:
print(*sorted(boxes[query[1]])[1:])
else:
print(*box_nums[query[1]])
自分の実装(追記)
ABC_298_C.py
N = int(input())
Q = int(input())
boxes = [[] for i in range(N+1)]
box_nums = [set() for i in range(201000)]
for i in range(Q):
query = list(map(int, input().split()))
if query[0] == 1:
boxes[query[2]].append(query[1])
box_nums[query[1]].add(query[2])
elif query[0] == 2:
print(*sorted(boxes[query[1]]))
else:
print(*sorted(box_nums[query[1]]))
感想
流石にC問題すら今回解けないとは思わなかった。他の方のPython
による解説をもとにして再度挑戦したい。
set
は自動で数字の順序が決定するものであると思っていたが、違ったようなので今後気をつけたい(2023年5月30日追記)。