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

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

競プロ

AtCoder diverta 2019 Programming Contest 2 B - Picking Up (Python)

irisruneです。今週もコンテストは出ていませんでした、コンテスト開催日時に合わせて色々調整することも考えないといけませんね。 atcoder.jp C問題よりも難しいと感じる人もいたそうです。確かに問題文だけ見るとC問題の方が単純そうには見えました(まだC…

AtCoder ABC 129 E - Sum Equals Xor(Python)

irisruneです。最近AtCoder ProblemsのRecommendationsがスパルタに感じてきました。 問題 atcoder.jp 桁DPというヒントを見てしまいましたがほぼ自力です、多分。6/10の記事で実装が重いかと予想していましたが全然重くありませんでした。 import sys impor…

AtCoder ABC 129 D - Lamp Pythonで解けなかったのでJuliaで(Python, Julia)

irisruneです。C問題ではテストケースでトラブルがありましたが、D問題ではPythonの実行時間で少し騒ぎになっていたようですね。 問題 atcoder.jp 公式解説と少しアルゴリズムが違いますが大体同じ解き方です。具体的には、連続する障害物のないマスの数を走…

AtCoder ABC 129 C - Typical Stairs (Python)

irisruneです。今回不参加でしたがトラブルがあって大変だったみたいですね。 問題 atcoder.jp 当のトラブルがあった問題です。問題自体は最近珍しい気もする典型問題です。 import sys import numpy as np MOD = 1000000007 def main(): n, m = [int(x) for…

AtCoder ABC 123 D - Cake 123 をNumpyを用いてスマートに解きたかった話 (Python)

irisruneです。Numpyを有効に使って計算時間を短くしたかったのですが、なかなか難しいですね。 問題 atcoder.jp 公式解説でも解法が複数説明されていますが、どう解くとしても手法に工夫が必要でかなり難しいです。AtCoder ProblemsのDifficulty684しかない…

AtCoder AGC 034 B - ABC (Python)

irisruneです。当初Pythonで解けなくてGoで解いていたのですが、ミスに気付いたのでPythonで解き直しました。TLEしたときにすぐPythonのせいにするのはよくないですね。 atcoder.jp 600点としてはかなり簡単な方で、少なくとも土曜日の企業コン500点問題より…

AtCoder AGC 034 A - Kenken Race (Python)

irisruneです。Pythonを勉強し始めたので解ける問題はPythonで解くことが多くなると思います。 atcoder.jp 一見難しそうで思いつけば簡単…と思わせて引っ掛けポイントがある、そんな問題だと思います。 import sys n, a, b, c, d = [int(x) for x in input()…

AtCoder ABC 128 D - equeue (Go)

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

AtCoder ARC 042 B - アリの高橋くん をテーマに弊社エンジニアで対談会

irisruneです。ようやく対談会を記事にまとめることができました。 コードがなかったりいつもとスタイルが違いますが、お付き合いいただければと思います。 問題 atcoder.jp 登場人物紹介 筆者I:irisrune エンジニアA:AtCoderはやったことはないが周りにやっ…

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 のダイクストラ法で解けるような最…

AtCoder ABC 104 C - All Green を嘘解法で (Julia) (おまけ:ABC 116 D - Various Sushi をJuliaで書き直し)

irisruneです。今回もJuliaで問題を解いてみました。おまけで以前Go言語で解いた問題も解き直して実行時間など比較しています。 ABC 104 C - All Green atcoder.jp 当時2完で冷えた回ですが、今見ても300点にしては難しいと思います。なお嘘解法でゴリ押しで…

AtCoder ABC 100 C - *3 or /2 でJuliaを試してみる(Julia)

irisruneです。久々に新しい言語に挑戦してみた回です。 前置きをしておくと、今回は問題の難易度はかなり低めで言語周りの話がメインです。 なお、こちらの記事に多大な影響を受けているためこの場を借りて紹介させていただきます。 qiita.com そもそもJuli…

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 …

ABC 116 D - Various Sushi (Go)

irisruneです。回転寿司なんかに行くとできるだけ多くの種類のネタを食べる派です。 atcoder.jp 多分実装が難しい部類の問題じゃないでしょうか。結構ゴリゴリ書いたので長めです。 package main import ( "fmt" "sort" ) type susi struct { t int d int } …

square869120Contest #6 C Infinite Grid ※嘘解法/バグありAC (Go)

irisruneです。400点問題は解けましたが記事執筆中にバグに気付きました、最後に書くので考えてみてください。 atcoder.jp 個ではなく数百個くらいでも変わらないかな?とは思っていましたが、それを解法に結び付けるには至りませんでした。結構強引に解こう…

ABC 124-D Handstand を累積和を用いて解いてみる(Go)

irisruneです。新しめのABC-D問題を扱うのは久々ですね。 atcoder.jp 解説だけでも3種類の解き方が示されていますが、 今回用いた解き方は累積和を用いたしゃくとり法に少し近い解き方です。見た瞬間はUnion-Find木使うのかと思いました。 package main impo…

ABC 078-D ABS (Go) / CADDi 2018-D Harlequin (Java)

irisruneです。ゲーム理論系の問題で500点ばかり見るのは気のせいでしょうか。 今回は解いた問題の実装が軽かったのと、似たような問題が過去にあったので久々の2本立てです。 ABC 085-D ABS atcoder.jp あまり入出力例が多いとボロが出るから例3,4は自明な…

ABC 085-D Katana Thrower (Kotlin/Go)

irisruneです。この問題を選んだ理由は最近発売された某ゲームを連想したからです。 今回は構造体の配列が作れなくてGoを断念したのでKotlinで解いていましたが、 後でGoで解き直したので両方のコードを掲載します。 atcoder.jp 初見だとそれほど難しくなさ…

ABC 123-C Five Transportations Go言語環境構築編(Go)

irisruneです。最近のD問題難しくないですかね… atcoder.jp 前回に引き続きGo言語ですが、今回は環境構築を行ったのでネタ作りのためその辺にも触れる予定です。 package main import ( "fmt" "math" ) func minArray(arr []int, nCity int) int { var minCa…