2022-02-01から1ヶ月間の記事一覧

C++で競プロ(メモ)

Pythonメインでやってきましたが,C++でもできるようになりたいと思い始めました. 主な理由は以下: 順序付集合など,Pythonが苦手とする処理がある(順序付集合 - 競プロはじめました) C++のコードが読めるようになると,参考にできる情報の幅が広がる(…

ABC241C - Connect 6

考え方 回答例 考え方「横6マス」,「縦6マス」,「斜め6マス」の中に「#が4コ以上(.が2コ以下)」あればYes.やるだけだが,バグらせないように気をつけなければならない.回答例次が非常に参考になる. Submission #29672182 - AtCoder Beginner Contest …

ABC240C - Jumping Takahashi

考え方 回答例 考え方「入力の全てのパターンに対応する到達地点を調べる」方法だと$2^{100} = (1024)^{10} \sim 10^{30}$で間に合わない.到達地点の候補は,$1\leq X \leq 10,000$の範囲なので,$10^{30}$よりずっと小さい.そこで,到達地点としてあり得…

ABC239E - Subtree K-th Max

子ノードの情報を結合してソート 考え方 回答例 子ノードの情報を結合してソートEditorial - Denso Create Programming Contest 2022(AtCoder Beginner Contest 239)の方法. 毎回ソートして間に合う!考え方各頂点$v$に対し,「頂点$v$の部分木に含まれる頂…

ABC179D - Leaping Tak

$\mathrm{dp}$で考える場合, $\mathrm{dp}$を中心に考えると,「貰うDP + 累積和」になり, 累積和(階差)を中心に考えると,「配るDP + 階差 (いもす法)」になる ということだと思う. 貰うDP + 累積和 考え方 回答例 配るDP + 階差 (いもす法?) 考え方 …

ABC238E - Range Sums

考え方 回答例 考え方$0$$,1, 2, ..., N$を頂点とするグラフで考える.「$(l, r)$が与えられる」を「頂点$(l - 1)$と頂点$r$の間に(無向)辺が張られる」と読み替えれば,\begin{aligned} & a_{1} + a_{2} + \cdots a_{N} \text{が計算できる} \\ &\Leftrig…

ABC238C - digitnum

何度もバグらせてしまったので,どうやればバグりにくいかを考える. 考え方 回答例 考え方$N$以下で$k$桁のものの個数$\mathrm{cnt}[k]$がわかれば,\begin{aligned} \sum_{k} \frac{\mathrm{cnt}[k] (\mathrm{cnt}[k] + 1)}{2} \end{aligned}が答えになる…

ABC238D - AND and SUM

考え方 回答例 考え方桁ごとに考えて,繰り上がりのない$(0,1), (1,0)$の桁と,繰り上がりのある$(1,1)$の桁に分ければ,次の式が成り立つ:\begin{aligned} x + y = \underbrace{(x \mathrm{\,XOR\,} y)}_{\text{繰り上がりなし}} + \underbrace{2 \times (…

ABC237E - Skiing

「スコアの符号を変えればダイクストラが使える!」と思って嘘解法で通してしまいました...負の辺を含まない形に問題を修正しなければなりません. Editorial - AtCoder Beginner Contest 237 考え方 符号の反転 ポテンシャルの導入 解くべき問題 回答例 …