茶色コーダーが復習を兼ねてブログにまとめていく
IT・プログラミング ABC435 C – Domino
N個のドミノが並んでいて1番目のドミノを倒した時に全部で幾つのドミノが倒れるかを求める問題。maxでどこまで倒れるかを常に持っておき、maxがi+1以下の場合ドミノが倒せないと考えてみた。入力例1で考えてみると、まず一つ目(i=0)のドミノ...
IT・プログラミング ABC434 B – Bird Watching
M種類の鳥が合わせてN羽飛んでいる。鳥の種類ごとに平均の重さを求める問題。鳥の種類ごとの出現回数と種類ごとの重さの合計をそれぞれ配列で持つことにしました。重さから種類ごとの出現回数を割ると平均が出せます。以下でACできました。def i_m...
IT・プログラミング ABC433 C – 1122 Substring 2
この問題はランレングス圧縮を使って解くことが出来ました。以前ランレングス圧縮を使って解いた問題⇩同じ文字がどれだけ続くかが肝になるなと思ったので、ランレングス圧縮の考え方を使って、対象の数字と連続する個数をもつ配列を作りました。入力例1のよ...
IT・プログラミング ABC432 B – Permute to Minimize
X を(先頭に 0 を含まない形で)十進表記した際に現れる数字を、先頭に 0 が来ないように 並び替えることで得られる正整数のうち、値が最小のものを求める。小さい順でソートして先頭が0の場合に、配列の前から見て0以外の値と先頭の0を入れ替え...
IT・プログラミング ABC431 D – Robot Customize
ロボットの頭と体に部品を取り付けられる。頭と体に取り付けるときにそれぞれ異なる嬉しさがあり、その嬉しさが最大になるように部品を取り付ける問題。ただしそれぞれの部品には重さがあり、体より頭が重くなってはいけない。まず全ての部品を体につけること...
IT・プログラミング ABC430 C – Truck Driver
入力例1で考えていくA = 4以上B = 2未満まずはaとbの累積和を求めるidx01234567891011abbaaabaabaa011123445667b001222233344その後、lを固定した時に2分探索でaとbの条件に当てはま...
IT・プログラミング ABC430 B – Count Subgrid
n行n列のグリッドからm行m列のグリッドを取り出して得られるマスの塗られ方が何種類あるかを求める問題。m行m列のグリッドを覚えておかないとと思って色々考えていたら、setで持てば良いのではと閃いて何とか解けました。m行m列を1次元のtupl...
IT・プログラミング 茶色コーダーになったので自分の現状まとめてみる
Atcoderで茶色レートになれたので現在の自分のレベルを記事にしておこうと思います。このブログでAtcoderの問題の解き方(というより復習?自分の思考の整理?)を記事にしていますが、こういうレベルの人が書いているということでご理解いただ...
IT・プログラミング ABC429 C – Odd One Subsequence
整数列Aの中から2つは等しく、残りの1つは異なる組を満たす個数を答える問題どの数がいくつあるかを持っておけば良いなと思ったところまでは良かったですが、そのあとが思いつきませんでした。まず、辞書型の配列で以下のように出現頻度をもつことにしまし...
IT・プログラミング ABC428 C – Brackets Stack Query
(と)の数をカウントして、同数になったときに良い括弧列とする形にしました。ただし、)(のような形は良い括弧列ではないので(の個数が)の個数以下の時に)がきたら、その場所を記憶しておき、その括弧がなくならないと(と)が同数でも良い括弧列とみな...
IT・プログラミング ABC426 C – Upgrade Required
1,2,...,NまであるOSのバージョンをクエリの条件に従ってアップグレードしていく問題。x yのような入力が与えられてx以下のバージョンをyにアップグレードする。一番古いOSのバージョンを記憶しておくと良く、またもし一番古いバージョンが...
IT・プログラミング ABC425 C – Rotate and Sum Query
長さNの整数列Aが与えられる。Q個のクエリを順に処理していく問題。以降はA = を考えていくクエリ1ではAの先頭を末尾に移動する操作した結果、先頭がどこかを保持する。これをxとしておく。操作回数はc。初期値は0とし、c=1の場合、xは1にな...
IT・プログラミング ABC424 C – New Skill Acquired
はじめに(A, B)=(0, 0)の習得済みのスキルを持っておきました。また該当のスキルを習得している場合に習得できるスキルをdictで持ちます。その後習得済みのスキルがあるだけループして、先ほどdictで持っておいたものの中から習得できる...
IT・プログラミング ABC423 B – Locked Rooms
問題文は↑はじめに部屋の先頭と末尾にダミー(1)を入れ、それ以外の部屋に0を入れた配列を用意します[1, 0, 0, 0, 0, 1]その後、先頭と末尾からそれぞれロックされたドア(1)に当たるまで各配列の中身を+1しながらループします0の...
IT・プログラミング ABC422 C – AtCoder AAC Contest
A、B、Cの文字をそれぞれ持っており、AとCは一つづつ使った上でその他の1文字を使い、AAC or ABC or ACCのどれかを最大いくつ作れるかといった問題。AとCは必ず使う必要があり、もう一つはAでもBでもCでも良いですが、Bの足りな...
IT・プログラミング RustでAtCoder Beginners Selectionを解き切ったので学んだことを書いていく
Rustの勉強に良いかなとAtcoder Beginners Selectionを少しづつ進めていましたが、ようやく全て解いたので学びをまとめていこうかと思いますRustでAtcoderを始めるときのテンプレート私はRustでAtcoder...
IT・プログラミング ABC416 C – Concat (X-th)
今回のC問題はitertoolsのproductを利用し、全列挙した後にソートすることでで解けましたfrom itertools import productdef i_map(): return map(int, input().spli...
IT・プログラミング ABC415 C – Mixture
Atcoder Liveの方で聞いた解説が一番理解できました個人的には以下の図で考えるのが一番わかりやすいかなと思っていて、状態0から薬品を混ぜて遷移できる状態を深さ優先探索のような形で辿っていきますこの時にすでに到達していた場合や、S(瓶...
IT・プログラミング ABC410 C – Rotatable Array
この問題はクエリのタイプに従って処理を行う問題です。この問題ではクエリのタイプ3の処理を高速化しないとTLEになってしまいます。初期状態が以下だとします。i01234A12345タイプ3のクエリで「 A の先頭の要素を末尾にする」という操作...
IT・プログラミング ABC409 C – Equilateral Triangle
ギリギリになって、累積和で点の座標を求めるところまで思いついたのに、正三角形を求める方法が思いつきませんでした。悔しい、、今回も解説を読んでいきます。問題円周上の点1,2,...,Nが配置されていて、点i+1は点iから時計回りに円周上をdi...
