/ 最近 .rdf 追記 編集 設定 本棚

log[20220918]



20220918() [AtCoder] 昨日あった UNICORNプログラミングコンテ2022(AtCoder Beginner Contest 269) のふりかえり(精進でも復習でもなく)コンテト成績証 - AtCoder自分のすべての提出AC までの所要時間は A=1分半B=4分C=4分D=16E=19F=4030分6完なら黄パフォもあったみたいだけど自分は1時間半かかりましたE は取りかかるまでに数分考えたしF は考えながら実装して詰まって考えて実装再開してまた詰まって飛ばした E 問題をチラ見してひらめいて完成させるまでに思いのほか時間がかかっていたAAnyway Takahashi自分の提出言語で入出力と四則演算ができますかという問題参加賞謎の Takahashi 推しだと思ったら(今日になって見た)問題名が自覚的だったBRectangle Detection配列やループが使えますかという問題どうとでも書くことができてかえって方向性を定めにくいかもねB 問題を解くのに短く書くとか効率良く解くとかは邪念と変わらないCSubmaskト列の部分集合を列挙する問題昇順で答えるところを見逃してはいけない何桁目のビトが立っているかを列挙して0個選ぶ組み合わせ1個選ぶ組み合わせ2個選ぶ組み合わせ……を考えるのが正攻法いや違う入力に1のビトが k 個あったとして 0 から (2^k)-1 まで繰り返すのが一番しっくりくる昇順に答えが見つかるので順番に出力していけるこの方法はつまり入力から0のビトを取り除いて1のビトだけで 0/1 の2択を k 個組み合わせ(2^k 通り)答えるときに取り除いた0のビトを再度補っていると考えられるちなみに知っていれば0のビトを取り除いたり補ったりする手間をかけずにそのままビト演算で列挙できるこの場合は降順に答えが得られるので逆順で答える蟻本と典型90問で取り上げられているので知っている人は知っているDDo use hexagon grid( diff)ハニカムグリド上で UnionFind をやる問題6個の隣接ドが問題文に書いてあるので文字通りにやるだ……なんだけど考える前に手が動く性分なのでドや辺がうまく見えなくて UnionFind が書けなかった座標平面を1列に延ばしておよそ4メガの点列を探索した←の提出は他の提出に比べて桁違いに遅かったので方針は同じながら効率に配慮したものを再提出した(314 ms67 ms)FNumbered Checker(ぎりぎり青 diff)だいたいいつも E 問題と F 問題は同時に開いてF 問題を先に読んでパッとは解けないことを確認してから E 問題に取りかかるんだけど昨日の F 問題はあからさまに簡単だったのでそのまま取りかかったェス盤に連番が書かれていてクエリで指定された矩形領域の白マスに書かれた数字の和をおおよそ定数時間で求める問題連番でも1つ飛ばしでも式は等差級数の式で変わらないWikipedia 等差数列を開いて2種類の式の使いやすい方を写すだ……だと思ったんだけど1行目の和を求めたあとで3行目5行目を含めた和を一括で求めるのに詰まってしまった自分はこんなあからさまに単純な法則で増加する数字をまとめて数えることもできないのかと不甲斐ない思いをしたよね各行先頭の白マスを見比べて 2M ずつ増えているなと数列の和の式を2階建てで適用したらサンプル1に含まれる6つのクエリのうち最後の1つ以外は正解したなんで1つだけ合わないとかそんな中途半端がありえるの? E 問題を読んだのはこのタイミング「インタラクの文字が目に入るやそっ閉じしたインタラクブ問題は問題形式そのものの難しさゆえか解くべき問題は易しめに手加減されていると感じることが多いんだけど(実際 E 問題だけど緑 diffった)っぱり問題形式に難しさがある初めての人が標準ライブラリの入出力がバッファされていることフラッシュの必要があることを理解できなくて TLE になるのは通過儀礼そこを抜けてもデバッグに手間がかかる昨日の E 問題は返すべき答えを人間が用意するのに難しさはないからまだましだけどデバッグのためにサーバープログラムを書くとなると時間がかかるF 問題の方が早く解けそうだった結局3行目5行目は 2M×列数 の割合で増えていたのだったELast Rook( diff)N×N のチェス盤に N 個目のルークを置く問題ークは飛車どちらがわかりやすいかどっちもわからない矩形を指定してクエリできるので領域を4つに分けながら絞っていくのかと最初は考えた行と列が入り乱れて死ぬ未来しか見えない最小2×2の盤面でクエリをシミュレトしてみたら結局縦と横で2回のクエリが必要になるのであって1つのクエリで盤面を4分の1に限定できるわけではないことがわかった縦と横で独立して調べるとして2の10乗はいくつか(クエリ総数が20だから縦と横にそれぞれ10回しか使えない)10242の10乗と10の3乗の対応は覚えておいて損はない102030トがキロメガギガに(ほぼ)対応するサウザドミリオンビリオンでもいいけどね制約は1辺 1000 以下制約からも方針の正しさが示唆されるのであとは実装するだ以前の日記二分探索を使った解法でかつて最も衝撃を受けたのは Vacant Seat というインタラクブ問題に対する提出 #2057817#2064531ったbsearch メソドから呼び出されるブロックの中でクエリを行っているいやね自分も提出 #7970588 の中で二分探索を使って答えを出してるんだけどそのことと対象となる具体的なソト列がないまま空中で二分探索を行う順序はクエリで動的に決定するということの間にどれだけの隔たりがあることかと書いたくらいなので今回は自分が bsearch メソドの中でクエリを行うターンだと当然考えたのだけど制約が1回のクエリの無駄も許さないと言っているのでブラックボックスの Range#bsearch メソドを信頼することができなかった今回も二分探索を手書きした提出前に気がついたけど手書きした二分探索は複数バグっていた■結果は 85 分でーミス6完の青パフまだかつての Highest に届かない