E - Bichrome Tree 解き方 ある頂点iの部分木について、黒白それぞれの重みの和を、b_i, w_iとして、それを更新していく 黒白は入れ替えても問題ないので、違う色か同じ色かだけ考えれば良い 頂点iがleafの場合、色はどちらでもよく、重みはx_iになる 頂点i…
D - Restoring Road Network 解き方 これまでに追加した辺のコストの合計と、その辺による各都市間の最短距離(d[i][j])を保持、更新する 距離が小さい方から順に考えていく。 町i, j間の最短距離がcの時、 もし、d[i][j] == cならば、もう辺を追加する必要は…
C - Sugar Water 解き方 A, B, C, Dそれぞれの操作を何回するか、全探索 A, Bについては、100A <= F <= 30 * 100より、たかだか30回 C, Dについては、最大でF/2g溶ける(E=100の時)ので、たかだか1500回 合計で[tex:O(109)]なので、ダメでは?という気もす…
競技プログラミング ARC083 結果 97th, 1551->1679 (Perf: 2363) Cを3回WAしてダメかと思ったが、うまいことEまで解けた。 AOJ0189, AOJ2249, AOJ2200 蟻本練習問題。warshall floydだったりdijkstraだったり、最短経路問題の基本系 その他 金沢行ってきた W…
Mr. Rito Post Office | Aizu Online Judge 解き方 からへの行き方は次の2通り 陸路で行く 船のあるところまで陸路で行き、船で適当なところまで行き、再度陸路 前計算として、陸路での最短距離、海路での最短距離をWarshall Floydで求めておく dp[i][j] = …
Road Construction | Aizu Online Judge 解き方 captalを始点としてdijkstraして、その後経路復元 経路復元のための情報において、条件を満たす辺のなかでコスト最小のものを保存するようにする 多分、priority_queueを使ったdijkstraじゃないとTLEすると思…
Convenient Location | Aizu Online Judge 解き方 Warshall Floydして、町間の最短距離を求め、それが最小となるところを見つける github.com
F - Sandglass 解き方 ある時刻におけるAの砂の量は、max(E1+C, min(E2+C, a+C))の形で表せる(aは最初にAに入っている砂の量) 各r_iについて、E1, E2, Cを前計算しておき、クエリに対しては二分探索→最後だけ計算 r_{i-1}のときの関数が求まれば、そこから…
競技プログラミング AOJ 2170 蟻本初級の練習問題。union find ABC073 87th 順調に解けた。 その他 特になし
D - joisino's travel 解き方 すべての町の間の最短経路の距離を事前にWarshall Floyd等で前計算 町の回り方をR!通りすべて試す(R<=8なので間に合う) github.com
C - Write and Erase 解き方 unordered_setを使えば良い github.com
B - Theater やるだけ github.com
A - September 9 数字として扱ったが、文字列のほうが簡単だった。 github.com
Marked Ancestor | Aizu Online Judge 解き方 対応するMarked Nodeが同じ頂点が同じ集合に含まれるようなunion findを作る 一旦、最終的なunion findを作って、クエリを後ろから辿りながらunion findを更新する ハマったところ 同じノードに複数回マークつけ…
D - Derangement 解き方 となるiの個数を数える ただし、上記のようなiが連続している場合、その2つを入れ替えれば良いので差し引く ハマったところ 特になし https://github.com/HiroakiMikami/procon-workspace/blob/master/src/atcoder/arc082/d.ccgithub…
C - Together 解き方 差が2以下であれば、同じ数字にできる 差が2以下となる数字の個数の最大値を求める ソートして、尺取り法すれば良い ハマったところ 特になし https://github.com/HiroakiMikami/procon-workspace/blob/master/src/atcoder/arc082/c.ccg…
競技プログラミング ARC082 結果: 241st, 1475->1551 (Perf: 2005) その他 BitCoinは取引ログを1日分とった 開発記録はプライベートWikiでつける予定 ServerlessFramework勉強始めた
agc019.contest.atcoder.jp 解き方 A[i] == A[j]を満たすA[i..j]を反転させる時、A[i+1..j-1]を反転させた時と同じになるので、それを引く ハマったところ 最初回文を除かないといけないと考え、実装はしたもののO(N^2)から落ちなかった 回文を除く方針は、…
agc019.contest.atcoder.jp 解き方 ただの貪欲 ハマったところ なんか貪欲法の実装に手間取ってしまった記憶がある https://github.com/HiroakiMikami/procon-workspace/blob/master/src/atcoder/agc019/a.ccgithub.com
競技プログラミング AGC019 結果: 735th, 1470->1475 (Perf: 1523) AとBを見間違えたり、Bを回文を数え上げる問題と思って苦しんだりしつつ、どうにか2完。自分の実力的にはこの辺が妥当そう。 その他 ハンダ付けのために必要と思しき道具を追加購入 BitCoin…
E - Don't Be a Subsequence 解き方 部分列でない最小の文字列の、先頭の文字を決める→2文字目以降の文字列について考える、を繰り返すDP DPする時には、後ろから決めていかないといけない どの文字を先頭にするか決めるために、どの文字がどこに現れるかに…
D - Coloring Dominoes 解き方 左から順々に見ていく。直前のタイルの貼り方と、次のタイルの貼り方は2*2の4パターンなので、それぞれ場合分けしながら計算する ハマったところ 上下に見ようとしたり、DFSしようとしたり、迷走していた 高さ2と小さいのだか…
C - Make a Rectangle 解き方 2個以上存在する数字を大きい方から2つ選んで長方形を作る ハマったところ 正方形のケース(同じ数字が2回登場する)を忘れていた github.com
競技プログラミング ARC081 結果: 446th, 1449 -> 1470 (perf 1614) Cの凡ミスと、Dで無意味に時間を書けたのはもったいなかったなぁ。E、Fは手が出る感じなかったし、今の自分の実力はこんなものなのだろう。 AOJ0121, AOJ0525 蟻本の練習問題 paiza 暇だっ…
おせんべい | Aizu Online Judge 蟻本初級の練習問題にあったので解いた。 解き方 どの行をひっくり返すかは、全部で2^R通りなので、これについてはすべて試すことができる。 ひっくり返す行を決めて、ひっくり返した後は、各列で裏と表のうち、多い方の数の…
7 パズル | Aizu Online Judge 蟻本初級の練習問題にあったので解いた。 解き方 終了時点(綺麗に整列した状態)から幅優先探索を行い、各状態から終了状態までの最小回数を求める 状態の個数はたかだか8!個程度なので、この前計算は十分間に合う 各クエリに…
D - Transit Tree Path 解き方 aからKへの距離とKからbへの距離の和を出力する Kから各頂点への最短距離は、木なので、DFSすればO(n)で求まる。 ハマったところ 0-indexと1-index混ぜてた 読み込み時に変えておくべきという話はありそう 最初全頂点から全頂…
C - Multiple Clocks 解き方 最小公倍数を求めるだけ。場合によってはオーバーフローに気をつけないといけないのかな。 github.com
B - Two Switches 解き方 区間[A:B]と[C:D]の重複区間を求める。[max(A, C):min(B, D)]。 github.com
A - Palindromic Number 解き方 先頭から確認するだけ github.com