ABC284 の E を解いた。なぜか解けなかった (2023-01-07) DFS するだけの問題。
調子が悪いので早めに寝る。『強いて言えば「集約どう実装するのかな、を考える」会』 https://architect-club.connpass.com/event/272854/ を途中まで観た。
今日のコミット。
ABC284 の E を解いた。なぜか解けなかった (2023-01-07) DFS するだけの問題。
調子が悪いので早めに寝る。『強いて言えば「集約どう実装するのかな、を考える」会』 https://architect-club.connpass.com/event/272854/ を途中まで観た。
今日のコミット。
2023-W03 をふりかえる。
目標。
記事。
よんだもの。
(なし)
みたもの。
(なし)
勉強会。
おでかけ。
(なし)
ゲーム。
買い物。
(なし)
体調。
育児。
2023-W03 はどうだったか。
いろいろあって疲れている。イベント参加もイマイチ増やせず、目標も達成できず、なかなかつらい。
マイナンバーカードをつくった (2023-01-20) 。
sitemap-xml は保留している。 reader の仕様に迷いが出てしまった。 writer までで止めてしまっても実用上は問題なさそうなのだけど……。代わりに bouzuya/rust-sandbox の bbn を直している。これは GitHub リポジトリのセキュリティ警告を消そうかと思い bouzuya/kraken を直そうとしたら、互換性が壊れるようになっており、どうせなら Rust で書き直そうと思い切った形。 JSON の出力を進めているが、 sitemap.xml の出力も来週にはできると思う。
AtCoder は ABC286 に参加した (2023-01-21) 。 1201 → 1213 (+12) (https://atcoder.jp/users/bouzuya/history/share/abc286) 。先週の ABC285 には参加できなかったので 1 週空いている。緑に落ちるかなと思ったけど、意外とプラスになっていた。
ラジオ体操・懸垂・フィットボクシング 2 を続けている。
バタついているので目標は控えめにする。
Rustオンラインもくもく会 #179 https://rust-online.connpass.com/event/272197/ に参加した。
bouzuya/rust-sandbox の bbn の直しをしている。経緯としては 2023-01-19 にある。 bbn に JSON を出力する機能を追加して bouzuya/kraken を廃止したいと考えている。
ABC286 に参加した。ぎりぎり緑に落ちそう。 E の問題文を読み間違えていて、最短経路の中から土産の良いものを選べばいいだけのところを、すべての経路から土産の良いものを探していた。ひどい。
今日のコミット。
ABC178 : AtCoder Beginner Contest 178 の A, B, C, D を解いた。
(a * c).max(a * d).max(b * c).max(b * d)
dp[i] := i 番目の要素で区切ったときの場合の数
use modint::ModInt1000000007 as ModInt; use proconio::input; fn main() { input! { s: usize, }; let mut dp = vec![ModInt::new(0); s + 1]; dp[0] = ModInt::new(1); for i in 1..=s { for j in 0..i.saturating_sub(2) { dp[i] = dp[i] + dp[j]; } } let ans = dp[s]; println!("{}", ans); } // modint
マイナンバーカードを受領した。役所は平日のみなので困る。積極的につくりたくはなかったのだけど、避けられなさそうな気がしたので、どうせならポイントをもらえるうちにと思って作成した。
Pixel 7 は大きいのでカバーの背面にリングをつけているのだけど、その状態だと読み込めなくて体験が悪い。 Pixel 7 のサイズが悪い。
友人のアイコン画像について「いまさらだけどそのアイコン何?」と聞いたら、前にも聞かれたぞと言われて、調べたら 2 年前に聞いていた。ボケている……。怖い。
今日のコミット。
ABC094 : AtCoder Beginner Contest 094 の A, B, C, D を解いた。
(a..=a + b).contains(&x)
A
から x
より小さい数とより大きい数の個数をそれぞれ求めて小さい側が答えX
のソートして中央の 2 個を調べておき、小さい側を L, 大きい側を R とする/2
で表現したら整数除算の関係でズレて 1WAuse proconio::input; fn main() { input! { n: usize, mut a: [i64; n], }; a.sort(); let x = a[n - 1]; let mut k = (a[0], (x - 2 * a[0]).abs()); for a_i in a.into_iter().take(n - 1) { let d = (x - 2 * a_i).abs(); if d <= k.1 { k = (a_i, d); } } println!("{} {}", x, k.0); }
セキュリティアップデートをしようと思い、 bouzuya/blog.bouzuya.net の依存関係のバージョンを上げたら、まずいのは bouzuya/kraken だと言われ、 kraken の依存関係のバージョンを上げたら出力結果が変わったので面倒になってきた。もうメンテナンスするつもりがないので、いまの出力結果と同じになるものを Rust で書き直すつもりで居る。 HTML 側は面倒だけど JSON 側は比較的容易なはず。
今日のコミット。
ABC038 : AtCoder Beginner Contest 038 の A, B, C, D を解いた。
s.ends_with('T')
h1 == h2 || h1 == w2 || w1 == h2 || w1 == w2
l == r
で各要素に 1 通りずつl < r
は単調増加する箇所ごとに x choose 2 通りずつ。 x は単調増加する箇所の長さdp[h] := 高さ h における最大の個数
として順に更新していくuse std::cmp::Reverse; use proconio::input; use segtree::*; fn main() { input! { n: usize, mut wh: [(usize, usize); n], }; wh.sort_by_key(|&(w, h)| (w, Reverse(h))); let mut st = Segtree::<Max<usize>>::new(100_000 + 1); for (_, h) in wh.into_iter() { st.set(h, st.prod(0, h) + 1); } let ans = st.all_prod(); println!("{}", ans); } // segtree
今日のコミット。
体調が悪いので一回休み。
子どもが保育所で阪神淡路大震災の際の話を聞かされたようなのだけど、「きょうほいくしょがかじになった」を連呼するばかりで震災のときの話をされたという文脈がなかったので、それに気づくまで「保育所が火事ってどういうこと……? ボヤがあったらさすがに保護者に一言あるはずだけどそれがないってどういうこと……?」となっていた。
今日のコミット。