pythonで青くなるブログ

主に競プロのについての記事(日記的な)を書きます。現在atcoder水色,こどふぉ青色。python3使って、やってます。atcoder青くなりたい

atcoder

ABC248 D Range Count Query

内容 公式解説と違う解き方なのでメモ。 問題 リストAとクエリ(L,R,X)が与えられる。 Aの区間[L,R]に含まれる 数字X の個数を求める。 atcoder.jp 考えたこと(1-originで書いてます) F(L,R) =Aの区間[L,R]に含まれる 数字X の個数とする。 F(L,R) = F(1,R)-F…

memo: pythonで post-order traversalをnon-recursiveにやる!

intro 備忘録的メモです。 motivation pythonで、dsfの帰りがけ順序探索(post-order-traversal)をやるときに、非再帰で実装したい issue TLEしてしまう。 おそらく、下のような実装になるはずで。 while文の中の、 for nex in adj[node]:の部分が、遅い node…

ARC116 D I wanna win the game.

内容 ARC116のD問題 I wanna win the game をpythonで解説AC (解説というよりは、自分用のメモ) 問題 atcoder.jp editorial解と youtube解説の解の二つでといた。 考えたこと ポイント 実装 youtube liveの解法(桁ごとにDPしてく) 多分 O(logM*N**2) 定数倍…

ABC197 E Traveler

内容 Atcoder Beginner contest E問題 Travelerをpython でAC 問題 atcoder.jp 考えたこと 各色ごとに、左端で終わるか、右端で終わるかのどちらかが最適。 色ごとに試すと、2の(色の数)常になって辛い。 前の色の(左端、右端)だけ見れればいいので、[色数][…

第5回 ドワンゴからの挑戦状 予選 C - k-DMC

内容 第5回 ドワンゴからの挑戦状 予選 C - k-DMCをpythonで解いた。 問題 atcoder.jp 考えたこと クエリの数が少ないので、各クエリにO(N)くらいで答えればいいや。 区間の幅を固定して、スライドさせていくと解けそう。 尺取りだ! ポイント 区間の中の、D…

DDPC B - DDPC特別ビュッフェⅡ

内容 DDPC B問題 "DDPC 特別ビュッフェII"を、pythonで解いた。 にぶたんのメモ。 問題 atcoder.jp 考えたこと 条件を満たす最小時間を求めろ。 美味しさが高いものから食べていけばよさそう。 二分探索でいけるのでは ?と思い、二分探索 ポイント 制限時間…

CODE FESTIVAL2015-D 壊れた電車

内容 CODE FESTIVAL2015 予選A D問題「壊れた電車」をpythonで解いた。 二分探索をバグらせがちなので、メモとして。 問題 atcoder.jp 考えたこと 最小値を求める問題で、にぶんたんができそうなので、 にぶたんする。 ポイント シミュレーションの時に、左…

AOJ Matrix Chain Multiplication

内容 AOJ "Matrix Chain Multiplication"を pythonでといた。 下のやつの区間DP編 qiita.com 問題 複数の行列の積を計算するときに、どの順番で計算すると、scalarの乗算が少なくなるのか? http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_…

ABC187 E Through Path

内容 Atcoder 187 E問題(500) Through Pathをpython で 解説AC 問題 atcoder.jp ポイント 木の上で、imos法を使う。 適当に頂点を置くと、queryは、次のどちらかに言い換えができる。 ある頂点 k の子孫に xを足す ある頂点 kの子孫以外にxを足す rootの子孫…

AtCoder ARC103 E Tr/ee

内容 Atcoder ARC103 のE問題(700) Tr\eeをpythonで解いた。 問題 atcoder.jp 考えたこと S[i]=="1"の時に、N頂点は iとN-iに別れる-> S[i]==1ならS[N-i]==1 木だから葉が存在する。そこできると、1とN-1に別れるはず。-> S[1]==0 ポイント 頂点のidの大きい…

ABC013 D 阿弥陀

内容 Atcoder Beginner Contest 013 D問題 「阿弥陀」をpythonで解いた。 問題 阿弥陀くじが一つ与えられる。 そのあみだくじを、D個縦につなげる。 つなげたあと、各スタート地点からたどり着く場所を求めろ。 atcoder.jp 考えたこと あみだくじは、同じも…

ABC013 D 阿弥陀

内容 Atcoder Beginner Contest 013 D問題 「阿弥陀」をpythonで解いた。 問題 阿弥陀くじが一つ与えられる。 そのあみだくじを、D個縦につなげる。 つなげたあと、各スタート地点からたどり着く場所を求めろ。 atcoder.jp 考えたこと あみだくじは、同じも…

ABC170 E問題 Smart Infants

内容 ABC170のE問題(500) Smart Infantsを解いた。 コンテスト中には解けなかったが、この類の問題を解けるようになりたいので、メモで残す。 問題 園児と幼稚園がある。 園児は、それぞれどこかの幼稚園に所属していて、atcoderのrateを持っている。 *園児…

ABC164 E Two Currencies

内容 ABC164 のE問題(500点) Two Currenciesを、python出といた。 問題 atcoder.jp 考えたこと 各頂点への最短時間なので、dijkstraしたい。 移動できるかどうかは所持金に関わってくる。 所持金も状態として持ちたい。 ポイント u->vの移動にかかる金額は高…

ABC164 E Two Currencies

内容 ABC164 のE問題(500点) Two Currenciesを、python出といた。 問題 atcoder.jp 考えたこと 各頂点への最短時間なので、dijkstraしたい。 移動できるかどうかは所持金に関わってくる。 所持金も状態として持ちたい。 ポイント u->vの移動にかかる金額は高…

ABC 069 D - Decrease (Contestant ver.)

内容 ABC069のD - Decrease (Contestant ver.)(600点)をpythonで解いた。 問題 atcoder.jp 考えたこと 操作を逆から考えて、答えを構築する。 とりあえず、N=50にして、初期値をN-1にして構築してみる。 各iでの操作回数をできるだけ同じようにすることで、…

ABC 145 E All You can eat

内容 ABC145のE問題(500点)「All you can eat」をpython出といた。 提出はpypy 問題 atcoder.jp 考えたこと ナップサックな感じだし、制約がN=3000なので、N**2でできそうなDPを思いつく。 T-1に頼んだものは、食べ終わることができる。 料理を頼んだ時、そ…

Atcoder Tenka1 Programmer Beginner Contest C: Align

内容 Atcoder Tenka1 Programmer Beginner Contest のC問題:Alignをpythonでといた。 問題 atcoder.jp 考えたこと 解説にもある通り、ギザギザな感じにすると良い。 a

ABC 157E: Simple String Queries

内容 ABC 157のE問題をpythonで解いた 問題 atcoder.jp 考えたこと 問題を見る感じ、seg木じゃんとなるので、segtreeで考える。 ポイント * 各ノードが、区間にどのアルファベットを持つかを記録できる必要がある。 ここで、setとかでやると、TLEしてしまう…

ABC 154 E: Almost Everywhere Zero

内容 ABC 154のE問題:Almost Everywhere Zeroをpythonで解いた。 問題 問題シンプルで、 1 以上N以下の整数であって、10 進法で表したときに0 でない数字がちょうど K 個あるようなものの個数を求めてください。 atcoder.jp 考えたこと 以前といた「桁DP」…

Educational Codeforces Round 83 D

内容 EC R-83 D問題 Count the Arraysをpythonでと解きました。 問題 codeforces.com 以下の条件を満たす配列 A の数を求める len(A)=N Aの要素は [1,M] ちょうど一つ、等しい数のペアを含む あるインデックス iが存在し、1~iまでは単調増加、i~Nまでは単調…

ABC137 E Coins Respawn

内容 ABC137 E問題Coins Respawnをpythonで解きました。 問題 atcoder.jp 考えたこと 問題見た感じ、辺のコストを(-cost+P)にして、負の辺がある最短経路問題じゃんと思った。 負の重みの辺があるので、ダイクストラは使えなくて、 ベルマンフォード を使う…

ABC 134 C "Exception Handling"

内容 ABC 134 C(300点) "Exception Handling"を解きました。 問題 https://atcoder.jp/contests/abc134/tasks/abc134_c 考えたこと 自分より左の区間のmaxと、自分より右の区間のmaxを比べて大きい方を出せばいい。 ポイント 左から見ていく場合の最大値と、…

ABC 134 D "preparing Boxes"

内容 ABC 134 D(400点) "Preparing Boxes"を解きました。 pypyで提出(pythonだとTLEしてしまったため) 問題 https://atcoder.jp/contests/abc134/tasks/abc134_d 考えたこと iの箱に入れると、iの約数の箱に影響が出る。 玉を入れると、自分より大きい数の箱…

ARC-89 B Checker

Abst ARC089のB問題 (500点) Checkerをpythonで解きました。 pypyで提出しました。 問題 queryとして、2Dのgridで、点の座標と色(黒orしろ)が与えられる gridを幅Kの正方形で白黒のチェック模様に塗る queryの座標と色の組み合わせを満たす個数を最大にする…

ABC 131 Anti-Division

Abst ABC 131 C問題 Anti-Division (300点)をpythonで解きました。 問題 [A,B]の整数のうち、CでもDでも割り切れないものの個数を求める。 atcoder.jp 方針 [A,B]の個数という問題なので、 [0,B]の個数から [0,A-1]の個数を引く ことで答えを求める。 CでもD…

ARC077 D 11

Intro ARC077 D問題 「11」(600点) をpythonで解きました! Point 逆元を使った組み合わせの計算 問題 1~nの数字からなる長さn+1の数列が与えられる。 (1~nの数字の中で、一つだけ2回出てくる数字があって、それいがいは1回しか出てこない) k=1...n+1につい…

ABC 122 D We like AGC

Abstract ABC 122 D問題(400点) 「We like AGC」 を解きました。 python こんな人にオススメ 数え上げの練習がしたい dpの練習 problem 以下の条件を満たす文字列を AGC文字列 とする。 A,G,C,T の4文字でできている "AGC"という文字列を含まない 任意の文…

Atcoder M-SOLUTIONS プロコン D- Maximum sum of Minimum

概要 Atcoderで開催されてた、M-SOLUTIONS プロコンオープン D問題(500点)の解説記事です。 python でときました。 問題 入力 頂点数Nの木が与えられる。 N個の自然数 内容 木の頂点に与えられた数字を当てはめていく。 edge(a,b)があった時に、そのスコアを…

ABC 128 C switches

概要 ABC 128 C問題のswitchesをpythonでときました。 問題 atcoder.jp 解法 スイッチの付け方を全探索する。 ポイント bitを使ってスイッチのon-offの状態を表して、全探索する。 回答 # python template for atcoder1 import sys sys.setrecursionlimit(10…