2022-05-19 Java instanceof のパターンマッチ変数のスコープ / ABC048 を解いた
Java の instanceof
でのパターンマッチの変数のスコープはてっきり続く {}
の中だけかと思ったのだけど if (!(s instanceof T t)) {}
のあとで使えていて「そうなのか」と思った。
public static boolean bigEnoughRect(Shape s) {
if (!(s instanceof Rectangle r)) {
// You cannot use the pattern variable r here because
// the predicate s instanceof Rectangle is false.
return false;
}
// You can use r here.
return r.length() > 5;
}
https://docs.oracle.com/javase/jp/17/language/pattern-matching-instanceof-operator.html
ABC048 : AtCoder Beginner Contest 048 の A, B, C, D を解いた。
- A - AtCoder *** Contest
https://atcoder.jp/contests/abc048/tasks/abc048_a
- 提出: https://atcoder.jp/contests/abc048/submissions/31798267
- "A" 二番目の文字の一文字目 "C"
- 解説を読むと先頭 1 文字ずつを出力すれば良いと書いてあって確かにと思った
- B - Between a and b ...
https://atcoder.jp/contests/abc048/tasks/abc048_b
- 提出: https://atcoder.jp/contests/abc048/submissions/31798365
0
を含んでいるので微妙に難しいy
以下の整数のうちx
で割り切れるものの個数はy / x + 1
(/
は切り捨て)- ↑を
f
としてf(b) - f(a - 1)
すればおおむね良いのだけど a = 0
がありえるので注意が必要
- C - Boxes and Candies
https://atcoder.jp/contests/abc048/tasks/arc064_a
- 提出: https://atcoder.jp/contests/abc048/submissions/31798487
- 一瞬「貪欲法じゃダメか」と思った
- できるだけ複数箇所に効くように食べれば良いので端からはなるべく食べないほうが良い
- あとは前から貪欲に必要数だけ食べていって回数の合計を求めると良い
- D - An Ordinary Game
https://atcoder.jp/contests/abc048/tasks/arc064_b
- 提出: https://atcoder.jp/contests/abc048/submissions/31798631
- どこかで見た問題だと思ったら 2022-04-20 に解いていた
- 両端が同じかどうかで最小の終了時の長さ (偶奇) が決まる
- 異なるものが隣接しないといけないことと組み合わせると終了時の偶奇が分かる
- 初期の長さと終了時の偶奇から先手・後手のどちらが勝つのかが決まる
今日のコミット。
- rust-sandbox 9 commits
- bex: Add RetrieveRequest::offset
- bex: Add RetrieveRequest::since
- bex: Add RetrieveRequest::domain
- bex: Add RetrieveRequest::search
- bex: Add RetrieveRequestSort
- bex: Add RetrieveRequestContentType
- bex: Add RetrieveRequestTag and fix tests
- bex: Add RetrieveRequestFavorite
- bex: Add RetrieveRequestState
- rust-atcoder 1 commit