2022-09-28 ABC060 A, B, C, D を解いた / twiq 実装メモ (8)
ABC060 : AtCoder Beginner Contest 060 の A, B, C, D を解いた。
- A - Shiritori
https://atcoder.jp/contests/abc060/tasks/abc060_a
- 提出: https://atcoder.jp/contests/abc060/submissions/35213948
a.last() == b.first() && b.last() == c.first()
- B - Choose Integers
https://atcoder.jp/contests/abc060/tasks/abc060_b
- 提出: https://atcoder.jp/contests/abc060/submissions/35214006
- A の倍数を B で割ったものを列挙する
B <= 100
から剰余はたかだか 100 個にしかならない(A * x) % B
を 1 周期分繰り返すと得られる可能性のあるあまりを列挙できる- これに C が含まれるかを調べれば良い
- C - Sentou
https://atcoder.jp/contests/abc060/tasks/arc073_a
- 提出: https://atcoder.jp/contests/abc060/submissions/35214110
t_{i+1}
とt_i
の間隔とT
の小さい方の総和を取る- 最後の要素は次の要素がないため
T
でカウントする
- D - Simple Knapsack
https://atcoder.jp/contests/abc060/tasks/arc073_b
- 提出: https://atcoder.jp/contests/abc060/submissions/35214352
- ナップサック問題の派生
- 制約の
W <= 10^9
から空間的に確保できない W_1 <= W_i <= W_1 + 3
なので W_1 を 0 として考えると最大でも 3 ずつしか増えないN <= 100
なので最大重量は100 * W_1 + 300
と表せる- 選んだ個数と W_1 を 0 として考えた重量の合計を使って次のような DP を考える
DP[i][j][k] := i 番目まで見て j 個を選んでW_1 を 0 として考えた重量の合計 k のときの価値の最大値
- 各要素について「選択する」「選択しない」を試す
O(N^3)
でN <= 100
くらいなので間に合う
twiq 実装メモ (8)
作業のスタックの把握。
user
を解決できない- worker が動いていない
use_case::command::create_user_request
のためのUserRequestRepository
が未実装になっているimpl TryFrom<EventStream> for UserRequest
が実装されていないUser
へEventStream
を適用する
User
への EventStream
の適用。
EventStream
の API の設計ミスに気づいたEventStream::push
はEventType
とEventData
を指定すれば自動でEventId
EventStreamId
EventStreamSeq
を埋めてくれる- しかし
EventData
の構築にはEvent
の構築が必要で、Event
の構築にはEventId
やEventStreamId
やEventStreamSeq
が必要だ EventData
からEventId
EventStreamId
EventStreamSeq
を取り除くしかなさそう?EventData
に変換するためのPayload
を追加するPayload
はserde::Serialize + serde::de::DeserializeOwned
にする
今日のコミット。