塩見周子の徒然日記

自分のことを塩見周子と思い込んでいるオタクです

2020-01-01から1年間の記事一覧

Pythonの深さ優先探索で失敗した話

ハミルトン閉路が存在するか判定する問題。入力は、 n m x_1 y_1 x_2 y_2 ... ... x_m y_m で与えられる。(nは頂点数、mは辺の数。x_i,y_iは頂点x_iとy_iを結ぶ辺が存在することを表す) #合ってるコード(しかしこれもn=15くらいだと落ちるね......) n,m = …

復習 4/18,4/19

O(n)で前計算することで、各nCrをO(1)で求められるようにする。 mod = 10**9+7 MAX = 10**5+1 #nは10**5までを想定 fact = [1]*(MAX+1) for i in range(1, MAX+1): fact[i] = (fact[i-1]*i)%mod inv = [1]*(MAX+1) for i in range(2, MAX+1): inv[i] = inv[m…

復習 4/9,4/10,4/11

atcoder.jp1からkまでのiに対して、 ・「i回目に働くのは一番早くて何日目?」 ・「i回目に働くのは一番遅くて何日目?」 というのを格納した配列A,Bを考える。いずれも、oxの列を前から、後ろから見ていくことで可能。結論から言うと、A,Bについて、A[i] ==…

復習 4/2,4/3

atcoder.jp必勝法ゲー。dpで遷移を見る。「j枚目で回ってきたときに勝てるか?」をdp[j]で管理する。 取れる枚数がn種類(a_1...a_n)あったとき、dp[j-a_i]が全て「win」であれば、必ず相手に「勝てる」状態で回してしまうことになるため、dp[j] = lose 逆…

復習 3/31,4/1

atcoder.jpまずは美味しい順にソートして上からK個取る。そこから、残りのN-K個のうちでどれかと交換することで満足度が上がるかどうかを見ていくわけだが、この時、すでに取っているネタの種類がi種類であれば、そこから種類を減らすことによって満足度は決…

セグメント木、BIT(反転数)

・セグメント木 書きようによっては任意の区間のGCDを求めたりもできるっぽいけど、とりあえずは任意の区間の最小値を求めることにする。 n = int(input()) #配列の要素数をnと置く。 L = list(map(int,input().split())) #配列 t = 1 while t <= n: t *= 2 …

復習 3/30

atcoder.jp逆元使ってn_C_k(を10**9+7で割った余り)を高速で求める、それはそうみたいな問題なんだけど、流石にテンプレをペタって貼り付けてn=10**5,kを1~10**5まで計算するのはしんどい(factorialの都合上)n_C_k-1からn_C_nまでを一気に求める問題であ…

復習 3/26, 3/27

atcoder.jp桁DP的な発想 解説読んでパッと理解できなかったatcoder.jpこれも桁DP的発想atcoder.jp提出した後で「2,8とかの組み合わせの時無理じゃね?」とか気付く。ちゃんと考察をしましょう。atcoder.jpグラフの用語を知った。 ・直径:一番遠い点間の距離…

復習 3/21

atcoder.jp総和が不変であり、その約数がgcdの候補であることは気づけた。そしてその後に分配するフェーズで余りを横に並べて右側はプラスされる側、左側はマイナスされる側と分けてそれぞれをチェックするところまでは発想できた。 (例) 約数=5で割った…

復習 3/19,3/20

atcoder.jp数字が「ある」ところを探すんじゃなくて、「ない」ところを探すという発想の転換。難しい。atcoder.jp発想の問題じゃなくて、大きな数字を扱うときは注意しましょうねという話。基本的にpythonは大きな数字はメモリの許す限り扱えるけど、例えば …

復習 3/16,3/17

atcoder.jps = 10**100とかいう良く分からん表現に振り回された感がすごいやることとしては、いっぱいつなげる方(s)に対し、sのi番目(iは0~len(s)-1、つまりsの各文字)の文字に対して、そこから数えてa,b,c....が次に最短でいつ出てくるかを数える(これをや…

復習 3/15

クッソサボってた しょうがないねatcoder.jp s = 'AAA' s = 'B' + s #s = 'BAAA' 上の例みたいに、文字列の先頭に新たな文字をくっつけるのは、末尾にくっつけるよりもかなり時間がかかるので注意すべしatcoder.jpサイズ付きUF木で一撃 こういうのが普通にで…

桁DP

桁DPは、例えば「0以上N以下の数字で、ある条件を満たす数字がいくつあるか」などを数えるのに便利な手法である。発想が単純なものと、複雑なものの2パターンある。<単純な方> 例えばこの問題↓ atcoder.jp?はワイルドカード(0~9のいずれでもいい)の時、?…

復習2/6,2/7

atcoder.jp <ずる> O((HW)**2)とは分かったものの一個だけTLEが取れない。全部道である場合のみ特例で除外したら通ったけどこれPythonの正攻法はなんなんやろね。atcoder.jp <解説AC> ロボットアームの動ける範囲の右端でソート→右端が小さい方から順番…

http://pr.cei.uec.ac.jp/~terada/lectures/comporg/2018/08.pdf

チュウニズム 15.75になりました

タイトルの通りです。 NAOKIの神威リミが収録されたのでやってきたら意外に出来たので、その勢いでレートを15.75に乗せてきました Surrogate Lifeはいい曲 4000クレも突っ込んでました ベスト枠は以下の通りです ベ枠が15.74になってからもう2ヶ月が経ち、な…

IM

2015 2014 2013 2007 2005 2004