Naomi's notebook

Naomi's notebook

2019-04-01から1ヶ月間の記事一覧

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>…

ワーシャルフロイド(ABC073D - joisino's travel)

atcoder.jp 簡単な問題が続いている… 通る頂点が8個と少ないので、この8つの頂点からの各頂点への最短距離を求めておく。 まあ全頂点間でも間に合うしめんどくさいのでそうする。ワーシャルフロイド(計算量) あとは8!通りの通り方についてこれを使って合計…

ダイクストラ(ABC070D - Transit Tree Path)

atcoder.jpオリ合宿のバスの中で。ただのダイクストラ。五分。 #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 rep(i,n) for(int i=0;i</cstring></set></string></queue></vector></algorithm></math.h></stdlib.h></stdio.h>