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

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

AtCoder

AtCoder AGC 007 B - Construct Sequences (Go)

irisruneです。最近あまりAtCoderに時間を割けていません。 問題 atcoder.jp 3つ目までの条件を満たしつつ4つ目の条件を満たすためにはどうすればよいか考える問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func …

AtCoder 第二回全国統一プログラミング王決定戦予選 B - Counting of Trees (再解説) (Go)

irisruneです。前回扱った問題のアルゴリズム面についてもう少し解説したいと思います。 問題リンクと提出コードは前回記事を参照してください。 ami-atcoder.hatenablog.com 例えば以下のような入力について考えます。 6 0 1 1 2 2 3 すると、次のような木…

AtCoder 第二回全国統一プログラミング王決定戦予選 B - Counting of Trees (Go)

irisruneです。例によってコンテストには出られませんでした。 問題 atcoder.jp アルゴリズムは素直ですが、解法のイメージができるかが問われる問題だと思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextS…

AtCoder AGC 019 B - Reverse and Compare (Go)

irisruneです。GoのLanguage Owner入りをのんびり目指していきたいです。 問題 atcoder.jp 除外して良いケースをどのように導き出すかという問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() string …

AtCoder AGC 040 A - >< (Go)

irisruneです。今週のコンテストは1完でまた水パフォでした。 問題 atcoder.jp 見かけがかなりわかりにくく、アルゴリズムが組みにくい問題だと思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() stri…

AtCoder AGC 032 B - Balanced Neighbors (Go)

irisruneです。気づけばもう11月となり、今年の終わりも近づいてきました。 問題 atcoder.jp パズル要素が強めのグラフ問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() string { sc.Scan() return s…

AtCoder E - Gluttony 解説AC (Go)

irisruneです。AtCoderの数学問題は注目を集めやすい印象です。 問題 atcoder.jp 大きなポイントが2つあり、どちらが欠けても上手くいかない問題です。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func nextStr() …

AtCoder ABC 144 D - Water Bottle (Go)

irisruneです。コンテストはE問題の解法がどうにも思いつきませんでしたが、水パフォは出ました。 問題 atcoder.jp 直球の数学問題ですが、D問題だけあって割と面倒な問題です。 package main import ( "bufio" "fmt" "math" "os" "strconv" ) var sc *bufio…

AtCoder ARC 074 / ABC 062 C - Chocolate Bar (Go)

irisruneです。最近台風の接近が多く関東の天気は荒れがちですね。 問題 atcoder.jp 本当に全探索すると間に合わないので少しだけ工夫する問題です。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func nextStr() st…

AtCoder ABC 143 E - Travel by Car (Go)

irisruneです。コンテストに出る習慣をどうにか取り戻したいところです。 問題 atcoder.jp 難しいアルゴリズムが求められそうですが、実装力があれば解けてしまう問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner fu…

AtCoder ABC 143 D - Triangles (Go)

irisruneです。コンテストは当日になってうっかり存在を忘れてしまいました。 問題 atcoder.jp 3重ループは通りませんが2重ループなら通る制約設定が重要です。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func ne…

AtCoder AGC 024 C - Sequence Growing Easy (Go)

irisruneです。AtCoder用の手元環境をもう少し整備したい思いです。 問題 atcoder.jp 700点の割には単純な問題だと思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() string { sc.Scan() return sc.Te…

AtCoder ABC 080 D - Recording (Go)

irisruneです。先週はコンテストがなかったので今週は過去問を扱います。 問題 atcoder.jp 一見関係のないように見える要素も実際は必要になってくる問題です。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func ne…

AtCoder AGC 039 B - Graph Partition (Go)

irisruneです。今週は台風の影響で公式コンテストが開催されないそうです。 問題 atcoder.jp どのような場合に条件を満たす分割が可能か、どのようにして分割の最大数を求めるかがポイントになります。 package main import ( "bufio" "fmt" "os" "strconv" …

AtCoder AGC 039 A - Connection and Disconnection (Go)

irisruneです。流石に残暑も落ち着いてきた感じです。 問題 atcoder.jp 単純に見えて意外と考えることが多い問題です。 package main import ( "bufio" "fmt" "os" "strconv" "strings" ) var sc *bufio.Scanner func nextStr() string { sc.Scan() return s…

AtCoder CODE FESTIVAL 2016 qual B C - Gr-idian MST (Go)

irisruneです。少し時間が取れなかったので月曜から過去問です。 問題 atcoder.jp 最小全域木を生成するアルゴリズムに貪欲法の要素を加えた感じになります。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() s…

AtCoder ABC 142 E - Get Everything 解説AC (Go)

irisruneです。解説ACですが記事にすることはできそうでした。 問題 atcoder.jp これも一つのbitDPではありそうですが、特殊なケースになると思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() string…

AtCoder ABC 142 F - Pure (Go)

irisruneです。ABC-F問題が自力で解けたのはこれで2度目です。 問題 atcoder.jp グラフ理論です。何を求めればよいかが把握できるかどうかの問題だと思います。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr()…

AtCoder ABC 142 D - Disjoint Set of Common Divisors (Go)

irisruneです。もう9月も終わりですが、残暑が続きますね。 問題 atcoder.jp アルゴリズムは単純なので難易度は比較的低いですが、素因数分解が必要なため割と面倒な問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner…

AtCoder Mujin Programming Challenge 2017 B - Row to Column (Go)

irisruneです。1300点問題が解けたのは嬉しいです。 問題 atcoder.jp 得点が高いですが、アルゴリズムや実装の難しさよりも数学パズル寄りの問題だとは思います。 package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc *bufio.Scanner func …

AtCoder AGC 038 A - 01 Matrix (Go)

irisruneです。やはりAGCはB問題が安定しないと手が出し辛いです。 問題 atcoder.jp いつものAGC-Aらしく数学パズル的な問題です。嘘解法ではないはずですが実行時間1978msでした。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Sca…

AtCoder ABC 141 E - Who Says a Pun? (Go) ※嘘解法

irisruneです。実行時間1945msはかなり攻めた嘘解法だと思いました。 問題 atcoder.jp 一見愚直に解けそうに見えますが工夫が必要な問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextStr() string { sc.Sca…

AtCoder ABC141 D - Powerful Discount Tickets (Go)

irisruneです。D問題が大体安定して解けるようになっている辺り成長を感じますね。 問題 atcoder.jp Go言語にとってソート以上の鬼門と言えるであろうヒープを使う問題です。 package main import ( "bufio" "container/heap" "fmt" "os" "strconv" ) var sc…

AtCoder ARC059 E - キャンディーとN人の子供 / Children and Candies (Go)

irisruneです。今回は部分点込みの解説になるのでコードの分量が多めなのと、式を使った解説が多くなっています。 問題 atcoder.jp 部分点解法は典型的な…?DP問題、満点解法はその発展となっています。 部分点解法(400点) package main import ( "bufio" …

AtCoder ABC140 D - Face Produces Unhappiness (Go)

irisruneです。青パフォを出すのはなかなか難しいですね。 問題 atcoder.jp 律儀にシミュレートしようとすると難しく思える問題ですが、解き方は意外と単純です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextInt…

AtCoder ABC140 C - Maximal Value (Go)

irisruneです。台風の影響により、今週は火・水・金の投稿となります。 問題 https://atcoder.jp/contests/abc140/tasks/abc140_c からを逆算するにはどうすればいいかという問題です。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio…

AtCoder AGC006 B - Median Pyramid Easy

irisruneです。ABC-F問題の壁は厚いですね。 問題 atcoder.jp 順列をどのように構築すればよいかがわかれば、順列が存在し得るかどうかも自然とわかります。あるいは小規模なケースで試してみるのもよさそうです。 package main import ( "bufio" "fmt" "os"…

AtCoder ABC139 E - League (Go) 失敗例と成功例(嘘解法?)

irisruneです。今週は解説の難しい問題ばかりで少し難儀しますね。 問題 atcoder.jp 実装するだけの問題とみせかけて、アルゴリズムを考える必要がある問題です。 失敗例 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func …

AtCoder ABC139 D - ModSum (Go)

irisruneです。暑さも多少和らいで雨も収まり過ごしやすくなったように思います。 問題 atcoder.jp 理論立てて考えないと、あまりに単純な解法すぎて戸惑うかもしれません。 package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner fu…

AtCoder ABC125 C - GCD on Blackboard (Go)

irisruneです。先週のコンテストはC問題もD問題も難しかったので過去問(リベンジ)回です。 問題 atcoder.jp 累積GCDなるフレーズが一時トレンド入りしたりしました。累積和と微妙に扱いが異なる点に注意が必要です。 package main import ( "bufio" "fmt" …