0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ABC 306 備忘録

Last updated at Posted at 2023-06-18

概要

 今回はABC306(2023年6月17日21:00~22:40)の問題ごとのポイントと自分の実装、およびリアタイしたときの自分の感想について述べていきたいと思う。

A問題

ポイント

  • 入力をリストで受け取り、文字を繰り返すように新しい文字列に追加

自分の実装

ABC_306_A.py
N = int(input())
S = input()

S_new = ''

for i in S:
    S_new += i
    S_new += i
    
print(S_new)

B問題

ポイント

  • 問題文の通りにAの10進法表記を計算
  • 桁数がズレないように注意

自分の実装

ABC_306_B.py
A = list(map(int, input().split()))
sum_A = 0

for i in range(len(A)):
    sum_A += A[i] * 2 ** i

print(sum_A)

C問題

ポイント

  • 数列A中に出てくる数字は決まっているので、各数字についてどの順番で出ているかを記録
  • 各数字に対して、[数字自体, その数字の中で真ん中となるインデックス]の情報を格納
  • インデックスの順番で昇順となるようにソート
  • 元の数字を記録し、出力

自分の実装

ABC_306_C.py
N = int(input())

A = list(map(int, input().split()))

indices = [[i] for i in range(N+1)]

# 数列Aのi番目の数字の番号に対応する列に格納
for i in range(3*N):
    indices[A[i]].append(i+1)

f = []

for ith_index in indices[1:N+1]:
    f.append([ith_index[0], ith_index[2]])

# f(i) となるもののインデックスの順番にソート
f = sorted(f, key=lambda x:x[1])
ans = []

for f_i in f:
    ans.append(f_i[0])

print(*ans)

D問題

ポイント

  • i番目の料理が出てきた際に、高橋くんがお腹を壊している・いない状態となる時にそれまで食べた料理のおいしさの総和が最大をDPで計算
  • i番目の料理が解毒剤入りか毒入りかどうかで場合分けを行う

自分の実装

ABC_306_D.py
N = int(input())

# X:毒入りかどうか 0:解毒剤入り、1:毒入り
# Y:料理のおいしさ
X, Y = [], []

# i回目の料理を食べるかどうか判断する際に
# dp[i][0]:お腹を壊していない時のおいしさの合計の最大値
# dp[i][1]:お腹を壊している時のおいしさの合計の最大値
dp = [[0, 0] for i in range(N+1)]

for i in range(1,N+1):
    X_i, Y_i = map(int, input().split())
    if X_i == 0:
        dp[i][0] = max(max(dp[i-1][0]+Y_i, dp[i-1][0]), dp[i-1][1]+Y_i)
        dp[i][1] = dp[i-1][1]
    else:
        dp[i][0] = dp[i-1][0]
        dp[i][1] = max(dp[i-1][0] + Y_i, dp[i-1][1])

print(max(dp[N]))

感想

 今回は、自分にしてはスムーズに進められたと思う。D問題までWATLEを出すことなく35分ほどで解くことができた。その後、E問題が解けずにずっと悩んでいたのだが、その間にジャッジが滞っていたのだと思う。Unratedとなってしまったのは、残念であるが今後も頑張りたいと思う。ただ、最近このようなことが多いので、他のサイトを利用しようかとも思っている。特に、外資系のコーディングテスト対策になるらしいLeetCodeに注目している。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?