Naomi's notebook

Naomi's notebook

AtCoder Beginners Selection in JavaScript 完走

atcoder.jp JavaScriptでACしていきます。 ちなみにコードゴルフでしかjavascriptを使ったことがないです。Haskell-> naomi-notebook.hatenablog.com メモ 等値演算子(==)と同値演算子(===) 最後の改行を.trim()とかで取り除かないと色々とバグります。こん…

AtCoder Beginners Selection in Haskell 完走

naomi-notebook.hatenablog.comこれの続きです AtCoder Beginners Selection - AtCoder ABC085C - Otoshidama こんなループもリスト内記法で実装できます(これって一般的な書き方なんでしょうか?全く知りません) import Control.Applicative import Contr…

AtCoder Beginners Selection in Haskell 〜B問題

atcoder.jpHaskellでACしていきます メモ エラー:pattern match failure in do expression はだいたい入力を前の問題から変え忘れたことによりパターンマッチしていないというエラー PracticeA - Welcome to AtCoder -- import module import Control.Appli…

☆ゲーム(エクサウィーズ2019C - Snuke the Wizard)

atcoder.jp 考察過程 いちいち更新してると2乗かかってしまう 一回の操作による移動を手早くできる方法がないかな? 最終的に端っこから出てしまうか出てしまわないかが大事。 →最終的に端っこにあるゴーレムがあるとして、そうなってしまうゴーレムの初期位…

文字列操作(AGC019B - Reverse and Compare)

atcoder.jp綺麗に思いついたし時間もそこまでかからなかった。実装が簡単だったのでよかった やっぱり計算量が大きい解法をまず考えて縮めていくのがよいっぽい。 考え方の途中経過 あるi,jを選んだ操作によって、場所が入れ替わる(int)(j-i+1)/2ペアについ…

☆(途中)数学的考察(ARC099D - Snuke Numbers)

問題 D - Snuke Numbers この回は確か参加したけどこれが解けなくて、まあギリギリ冷えなかった回。完全に忘れたので一から解いて行く。 これも含めてなのですが、最近のコンテストで冷えがちなのは500点(DかE)が数学的な問題で、数学的センスが壊滅的だか…

ゲーム(AGC020B - Ice Rink Game)

問題 atcoder.jp単純に逆から辿っていくので結構計算量も小さそうなんだけど、正確なところはわからないので、とりあえず実装してみよう。->計算量K(10^5)で操作できた。すごく時間がかかってしまった(最初から思いついてたんだけど例外がないか確かめるの…

DP(AGC023B - Find Symmetries)

atcoder.jp少し時間かかりめだったけど自分で綺麗なものを思いついてよかった。 解法 計算量的にN^3 ここで、A ケアレスミス 数字を読み込んだ後まだ改行が残っているため、一度無駄に読み込まないと次に読む文字が改行文字になってしまう。 コード #include<cstdio></cstdio>…

☆操作(AGC024B - Backfront)

atcoder.jp師匠の問題で操作するゲーム系のやつ、前も見た。確か後ろの状態から戻ってく感じだった… ここでも使えそう…と思ってその方針で長いこと考えたけど使えなかった、もっと簡単だった 解法 与えられた数列の部分数列をとって、それが連続()であり単…

☆二項係数(ABC127E - Cell Distance)

atcoder.jp時間内にこれを解き終わらず、さらにDでミスったため激冷えし冷め冷めになってしまった一回。リベンジしていきたいと思います。 まず、式をXとY独立に考えていいというところまでは誰でも思いつくと思います。 ABC途中の考察では色々めんどくさい…

☆数列(AGC010B - Boxes)

atcoder.jp yutaka1999さんの問題は面白いなあ(個人的には難しいですが…)一回の操作で、選んだ箱からN 個、他の箱から1,2,3...N-1個取る。 ☆1回の操作で取られる石の個数は1/2*N(N+1)なので、何回操作を行うべきなのかがわかる(または操作によって達成で…

Railメモ

Esolangのメモ第二弾 esolangs.org レール一覧 $ 'main'を実行する(必須) '|-/\'で道を作った順にプログラムが動く 道が途切れたらクラッシュ ただし繋げられる組み合わせは限られている。 '|' connects to itself and '\' and '/' '-' connects to itself …

Cubixメモ

esolangs.org ここに書いてある以上のことはないんだけど、英語だし表現が少しわかりにくいので(回転とかsidestepとか)自分用にメモ コマンド一覧 入出力 i - 入力から一文字読み込む、入力がなければ-1 I - /-?\d+/ iにマッチするまで(例:改行や空白区切…

(AGC002 C - Knot Puzzle)

atcoder.jpロープの結び目が全て切れないのは、どの隣同士の二つのロープを選んでも長さの和がL以上にならない時。 なぜなら、L以上になる隣同士のロープの組みが存在する時、その二本を中心として両端から結び目を解いていけば良い。(これを出力) 逆に、存…

☆幾何( AGC001B - Mysterious Light)

新元号令和おめでとうございます。 atcoder.jp うわ苦手…最初は三角形に対して光を射出してるけど、そのあとは光の軌跡によって区切られた平行四辺形に対して射出していると考えて良さそう。ここから解法をひねり出します。 この時両辺がa,b(a>=b>0)の平行四…

gcd(C - GCD on Blackboard)

atcoder.jp これは300点問題なんだけど、なんか話題になっていたのでまずユークリッドの互除法でgcdを求めるコードを書いておく。これの計算量はラメの定理により十進法での桁数くらいらしいですね(知らなかった)、すごい。まず、書き換える時は10^9以下な…

しゃくとり法の条件(ARC098D - Xor Sum 2 )

atcoder.jpXor出てきたばっかりだ いらなかった考察 まず準備としてを求めておく。これによって区間の和が定数時間で求められる。 この前の問題 でも見たように、xorの歩けたが1になる組み合わせはlogNで見つけられるんだよな…でもたし算の組みだけでも網羅…

組み合わせる(ARC096D - Static Sushi)

atcoder.jpまず、摂取カロリーを最大化したいので、当然前を通った寿司をスルーするということはできません。よって移動方法を考えることになります。。 また、スルーしないという条件より、最低でも全ての寿司の前を通った時には店を出なければいけませんし…

発想(ARC093D - Grid Components)

atcoder.jpこれ昔参加したコンテストで、ツイッターに流れてくる解法を見て天才か!?ってなったので印象に残っている 最も感動した問題の一つ。なので永遠に記憶が消えないと思うからACしておこう。カラクリはとても簡単で、連続した領域の数を調節するには…

xor(ARC092D - Two Sequences)

atcoder.jp もうだめだ 足し算なので分配則が成り立ったりはしないですね(ちなみにxorは分配則、結合則、交換則などが成り立つ排他的論理和(Exclusive OR)の性質) やる気が0なので5分で解説をちらっと見ました。 ビット毎に調べるという情報とmodを取ると…

累積和、いもす法(ARC089D - Checker)

atcoder.jpまず、市松模様を並行移動していくと、縦横それぞれKずつ動かした時に塗り方としては全く同じになる。また、2Kのマスをとると完全に繰り返しになるので、座標は2Kで割った余りにして良い。 白に塗るマスの指定はどちらか方向にKずらすことで黒く塗…

DP(ARC087D - FT Robot)

atcoder.jp最初のFの分だけx軸正方向に進まなくてはならないので、進んだところからスタートします。Tによって分離されるFの連続について、上下と左右の方向どちらに進めるFかで場合わけでき、それぞれについて組み合わせてちょうどxやyになる組み合わせがあ…

考察ワーシャルフロイド(ARC083D - Restoring Road Network)

atcoder.jpまず、全ての頂点の間に の辺を張ります。その状態で全頂点間最短経路をワーシャルフロイドで求め、その最短距離が実際の最短距離より小さい時、そのような最短経路は存在しません。なぜなら、 ①まず、Aのu行目について見ていって、その行の中で最…

multiset(ARC074D - 3N Numbers)

ちなみに記事のタイトルは「この問題で私が学んだこと」という基準で決めているため、実は解法に必ずしも関係があるとは限りません。atcoder.jp まず、数列は以下の三つに分けられる。 ①前半となるN個 ➁後半となるN個 ③抜いたN個 全ての①は必ず全ての②の前に…

ひっくり返す系の問題(ABC124D - Handstand)

atcoder.jpまず、列を0(直立)の領域と1(逆立ち)の領域に分けます。 この領域は必ず交互に並んでいるので、ある状態にしたい場合に0の部分を選択してひっくり返した時が回数が最小です。(これって自明でいいのかな…?) のでK個の直立グループをひっくり返し…

某機械学習の授業まとめ

機械学習>(検索よけのためここは後ほど記入する)という東大前期教養課程の授業を履修するのでどのような授業なのかメモしていく もちろん板書をそのまま載せるのは著作権的にまずそうなので、板書を見ないで思い出したり調べたりして書く。 一日目、二日目 …

mod(ARC071D - 井井井 / ###)

atcoder.jp電車の中で考察するとだいたい終わるし時間が潰せるので良い。直線によって区切られている小さなマスについて、そのマスが長方形の中に含まれる回数は、縦横それぞれでその範囲が長方形に使われるかを なのでまず一方の方向について考える。 実験…

todoリスト管理アプリ作成 第一回

todoistと同期できるスケジューラー兼トラッカーみたいなものが欲しいので、プログラミングの勉強がてら作ります。で、ついでにslack botの作り方を学んでいこうと思いました。 目標 作っているうちに変わってくると思いますが、大まかには ・todoistとスラ…

union-find(ARC069D - Menagerie)

atcoder.jp朝の電車の中で10分くらい考察して、あとは実装した。 大切なのは「ある2箇所の動物が決まると、その次の動物も決まる」と言うこと。 まず、可能かどうかを調べる。場所二つごとに羊と狼の組み合わせ(通り)を要素としてunion-findを行い、一周し…

やるだけ(ARC067D - Walk and Teleport)

atcoder.jp400点に飽きてきたのでたまには500をやるか、と思って簡単そうなのを選んで解いた なんでこれ500点なの…?300点くらいでは #include <stdio.h> #include <stdlib.h> #include<math.h> #include<algorithm> #include<vector> #include<queue> #include<string> #include<set> #include<cstring> using namespace std; #define re</cstring></set></string></queue></vector></algorithm></math.h></stdlib.h></stdio.h>…