あるエンジニアのAtCoder奮闘記

東京都港区にあるアミフィアブル株式会社のエンジニアが、AtCoderで解いた問題について振り返ったりしていく会社公認のブログです。

Go

AtCoder 第一回日本最強プログラマー学生選手権-予選- B - Kleene Inversion (Go)

irisruneです。随分Go言語にもお世話になっているので競プロ以外でも何かしら形にしてみたい気分です。 問題 atcoder.jp 制約条件に注目すると解き方が見えるかもしれません。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner …

AtCoder 第一回日本最強プログラマー学生選手権-予選- A - Takahashi Calendar (Go)

irisruneです。残念なことに仮眠したらコンテスト時間に寝過ごしてしまったので不参加でした。 問題 atcoder.jp たまには簡単めの問題をということで。条件が少し複雑ですが愚直にやれば解けるはずです。 package main import ( "bufio" "fmt" "os" "strconv…

AtCoder AGC 037 A - Dividing a String (Go)

irisruneです。ふとデザインを変えたいと思いましたが、ある程度まとまった時間を取らないと難しいですね。 問題 atcoder.jp 最多の分割を行うための方針は結構単純です。実は嘘解法と化していたことに後で気付きました。 package main import ( "bufio" "fm…

AtCoder ABC 138 E - Strings of Impurity (Go)

irisruneです。久々に比較的易しめなE問題だった気はします。 問題 atcoder.jp 発想力が占める比重がかなり大きい気はします。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func nextInt() int { sc.Scan() i, e :=…

AtCoder ABC 138 D - Ki (Go)

irisruneです。休暇を過ごした人もそうでない人もまた心機一転していきましょう。 問題 atcoder.jp 木構造に慣れていれば単純化しやすい問題ですが、計算量には気を付ける必要があります。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bu…

AtCoder ABC 137 C - Green Bin (Go)

irisruneです。前回のコンテストは色々あり2完で-91(1292→1201)と大変冷えました。 問題 atcoder.jp 解き方自体は発想さえできればといったところですが、言語のソート仕様によっては実装が面倒になります。 実はこの提出コードはAC時のものではありません…

AtCoder Tenka1 Programmer Contest C - Align (Go)

irisruneです。お盆休みのある人もいたり学生さんは夏休みだったりしますが、よい休暇を過ごせるといいですね。 問題 atcoder.jp なんとなくでも解法が見えそうな問題ですが、証明が難しかったり落とし穴があったりします。 package main import ( "bufio" "…

AtCoder ABC 136 E - Max GCD (Go)

irisruneです。問題の解説など試行錯誤していますが、アドバイスや感想などコメントを貰えると嬉しいです。 問題 atcoder.jp あることに気付かないとどうにも方針が立てられないので、かなりパズル要素が強い問題だと思います。 package main import ( "bufi…

AtCoder ABC 136 D - Gathering Children (Go)

irisruneです。日曜開催は予定を合わせるのが難しいです。 問題 atcoder.jp 大体こういう異様に大きな数字が出てきた時は剰余に注目すればよいですね。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextInt() int { s…

AtCoder AGC 002 B - Box and Ball (Go)

irisruneです。久々の過去問回です。 問題 atcoder.jp 突き詰めればただシミュレートするだけの問題で、操作によってどのような挙動を示すのかを把握できれば解くことができると思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bu…

AtCoder ABC 135 D - Digits Parade ※解説AC未遂 (Go)

irisruneです。今回は解説ACすらできていないという困った状況です。 問題 atcoder.jp 全探索は途方もない組み合わせ数になり、10進数に対する13で割った剰余なので右何桁かを見てある程度決まるということもないという、かなりアプローチに困る問題です。 p…

AtCoder ABC 135 C - City Savers (Go)

irisruneです。ABC135参加はしましたが…D問題以降が解けずNoSub撤退をすることになりました。 問題 atcoder.jp 逆から解く必要があるように見えましたが全くそんなことはなかった問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *b…

AtCoder ABC 131 E - Friendships

irisruneです。今週またABCがあるようなのでなるべく参加できるように調整したいですね。 問題 atcoder.jp 最短距離というワードがありますが、探索系(実装系)の問題ではなく考察系の問題なので気を付けましょう。 package main import ( "bufio" "fmt" "o…

AtCoder ABC 131 B - Bite Eating (Go)

irisruneです。ここ最近競技プログラミングに使う言語についてまた悩んでいるところです。 問題 atcoder.jp 実はD問題より解く時間がかかったので取り上げることにしました。絶対値の差ではなく差の絶対値なので誤読しないようにしましょう。 package main i…

AtCoder ABC 131 D - Megalomania (Go)

irisruneです。新形式になって以降C,D問題が簡単になったとは思っていましたが、今回はかなり極端だった気がします。 問題 atcoder.jp 解答者にとってはどちらかと言えばMegalomaniaよりParanoiaみたいな問題です。 package main import ( "bufio" "fmt" "os…

AtCoder ABC 131 C - Anti-Division (Go)

irisruneです。久々にコンテストに参加した結果、5完で1242→1292とレートが伸びました。 問題 atcoder.jp 典型テクニックの寄せ集めのような問題だと思います。 なお、コンテスト本番でPythonを使う度胸はなかったので久々にGo言語で書いております。 packag…

AtCoder ABC 128 D - equeue (Go)

irisruneです。この土日のコンテストは不参加だったのもあり記事にするのは間に合いませんでした。 https://atcoder.jp/contests/abc128/tasks/abc128_d "D"equeueとかけてるからD問題なんですかね。B、Cが難しければDも難しいときました。効率の良い方法を…

AtCoder ABC 128 B - Guidebook (Go)

irisruneです。D問題を記事にする予定でしたがB問題が結構難しかったので取り上げてみました。 atcoder.jp 簡単なC問題(ex.ABC127C)より難しい気がします。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func next…

AtCoder ABC 128 C - Switches (Go)

irisruneです。今日の記事は参加しなかった方のコンテストです。 atcoder.jp ABC127とは打って変わって少々厄介な問題です。 package main import ( "bufio" "fmt" "math" "os" "strconv" ) var sc *bufio.Scanner func nextInt() int { sc.Scan() i, e := s…

AtCoder ABC 127 D - Integer Cards

irisruneです。今日は試しに2記事公開してみました。 atcoder.jp アルゴリズムの発想と計算量の抑え方の両面が重要となる問題だと思いました。半分嘘解法です。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func ne…

AtCoder ABC 127 C - Prison (Go)

irisruneです。水パフォですが久々にレートが伸びて嬉しい気分ですね。 atcoder.jp 最近のC問題にしてはかなりシンプルな問題だと思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextInt() int { sc.Scan() i…

AtCoder AGC 017 A - Biscuits で色々な解き方を試してみる (Go)

irisruneです。AtCoder ProblemsのRecommendations機能のおかげで精進に困らなくていいですね。 atcoder.jp 失敗例含め4回解いていますが、大筋はあまり変わらない上に想定解法が天才解法なので全部嘘解法です。 失敗例 package main import ( "bufio" "fmt"…

AtCoder ABC 126 F - XOR Matching (Go)

irisruneです。2本立てはタイトルも本文もごちゃごちゃするので1記事に1本がよさそうですね。 atcoder.jp 適当に試行すれば解法が出てくると聞いたのでやってみたらACできました。しかし出力時点でミスしてWAを積み重ねました。 package main import ( "fmt"…

AtCoder ABC 126 D - Even Relation / E - 1 or 2 失敗例と解き直し (Go)

irisruneです。今回のコンテストは3完で冷えましたが…Unratedでしたね。 どちらもコンテスト中には解けなかったので解説ACです(正確にはE問題の解説を読んでD問題も解きました)。 ABC 126 D - Even Relation atcoder.jp のダイクストラ法で解けるような最…

diverta 2019 Programming Contest C - AB Substrings / D - DivRem Number 失敗例と嘘解法(Go)

irisruneです。久々にコンテストに参加したらUnratedになったなんとも言い難いお話。 C - AB Substrings atcoder.jp 全探索は(かかるため)できないとして、計算で求めるための場合分けが難しかったです。まずは失敗例を。 package main import "fmt" func …

ARC 042 C - おやつ

irisruneです。今回も忙しいので過去に解いた問題の解説になります。 atcoder.jp ナップサック問題の亜種なので簡単…ということはなく少し頭を使う必要がありそうです。 package main import ( "fmt" "sort" ) const INF = 1000000000 func maxInt(a, b int)…

ABC 012 D - バスと避けられない運命(Go)

irisruneです。GW中はJuliaについて色々調べたりしていました、その辺の諸々は雑記に。 atcoder.jp 少し忙しいので解説が難しくない問題を選びました。GW前の記事とジャンルが一緒ですね。 package main import ( "fmt" ) const INF = 1000000000 func minIn…

ARC 008 C - THE☆たこ焼き祭り2012(Go)

irisruneです。明日からGWです、休みの人もそうでない人も充実した10日間を過ごせればよいですね。 atcoder.jp なんと6年以上前の問題です。タイトルから問題文まで突っ込みどころが多すぎますが、推定難易度532点相当らしいです。 package main import ( "f…

ARC 048 B - AtCoderでじゃんけんを (Go)

irisruneです。本田圭佑選手とゲーセンのじゃんけんゲームはどっちの方が強いんでしょうかと思いました。 atcoder.jp 多分アルゴリズムを考えること自体はそこまで難しくはないと思うのですが、実装はやや重いと思います。 package main import ( "fmt" "sor…

Tenka1 Programmer Contest 2019 C - Stones をGoで解こうとしたら罠にハマりました (Go,Kotlin)

irisruneです。最近コンテスト時間に予定が被ってて参加できないのがよくないですね。 atcoder.jp アルゴリズム面は結論から言えば累積和を使いました。それで解けるはずだったんですけどね… package main import ( "fmt" ) func minInt(a, b int) int { if …