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を指定すれば自動でEventIdEventStreamIdEventStreamSeqを埋めてくれる- しかし
EventDataの構築にはEventの構築が必要で、Eventの構築にはEventIdやEventStreamIdやEventStreamSeqが必要だ EventDataからEventIdEventStreamIdEventStreamSeqを取り除くしかなさそう?EventDataに変換するためのPayloadを追加するPayloadはserde::Serialize + serde::de::DeserializeOwnedにする
今日のコミット。