競技プログラミング
順調に Rating が下がっているので,やはりD問題を解かないといけないな,と思った. AtCoder ABC #090
端以外は9で埋めてよさそうだったので,間に合う範囲で全探索した. AtCoder AGC #021 A. Digit Sum 2
C は直感で解いたので,間違っている可能性がある. D は 蟻本の幅有線探索を見た. AtCoder ABC #080 A. Infinite Coins AtCoder ABC #088 B. Card Game for Two AtCoder ABC #088 C. Takahashi's Information AtCoder ABC 088 D. Grid Repainting
最初 1 0 0 1 を出力するやつで,4,625,945,309 点 その後,例を眺めていて思いついたのが,最大値を見ていくやつで, Hack to the Future 2018 Qual で,963,334,4494 点 だった.
要素数10の配列 各要素は 0 or 1 全部で 210 = 1024 通り この組み合わせを列挙して,各要素が0か1か知るには, # 1 << 10 は 1024 (左シフト) (1 << 10).times do |b| x = [] 10.times do |i| # 任意の桁数右シフトして 1 と AND をとる x << ((b >> i) &…
次はハフマン符号してみた. かなり書くのが厳しかったが,とりあえず AC で,得点は 1692167.64 . 最下位脱出して 38 位. ハフマン符号 ver.(Rust)
とりあえず Python でハフマン符号してみたら,速度的に無理そうだったので,Rust に移植することに. とりあえず,自明解を提出. 実行するときは --release を付けないと結構厳しい. 書き出すときは,数値は u8 にする必要があるので,自前で頑張っている…
1185 -> 1172 C 二分探索するところまでは思いついたが,その後難しく考えすぎて解けなかった. B より大きいCの個数は毎回求めてたらTLEしたので,前計算する. AtCoder ABC #077
AtCoder ABC #076 D - AtCoder Express
B: 高橋ノルム君 - AtCoder Regular Contest 049 | AtCoder コストを固定して,二分探索. 何回するかがパッと思いつかないが, ぐらいなら 回ぐらいで十分らしい. AtCoder ARC #049 B - 高橋ノルム君
B: 同一円周上 - AtCoder Regular Contest 047 | AtCoder マンハッタン距離 => 45度回す AtCoder ARC #047 B - 同一円周上
B: 石取り大作戦 - AtCoder Regular Contest 046 | AtCoder AtCoder ARC 046 B - 石取り大作戦
B: 最短路問題 - AtCoder Regular Contest 044 | AtCoder 距離が同じもの同士は,ペアの選び方が なので, 通り 距離 から は ,距離 のそれぞれから 距離 のそれぞれについてつなぐ・つながない 二通りあって,全部つながないというのを除くので, 距離 が …
累積和 1回 にしたつもりが になっていて,TLEになった. AtCoder ARC #043 B - 難易度
頂点の座標が の三角形の面積 は (サラスの公式) なので,点を原点まで平行移動した後,面積を求めて, を底辺の長さで割ると辺までの距離が出る. AtCoder ARC #042 B - アリの高橋くん
端の列を除いて,4近傍の最小値を取っていく. 値が決まったら,元の4近傍から値を引いておく. 解説は,上から順番に決めていく方式だった. AtCoder ARC #041 B - アメーバ
最初,ユークリッド距離で近い順にK点選んで長方形を作る,ってやっていたけど,だめだった. x座標とy座標それぞれソートしてから長方形を全部作り,K点以上含まれるかどうか判定する. で,Ruby で書くとTLEだったので Rust. AtCoder ABC #075 D - Axis-P…
B: 直線塗り - AtCoder Regular Contest 040 | AtCoder 再帰でやると思ったが違っていた. AtCoder ARC #040 B - 直線塗り
Rating 変動なし A 場合分け B 爆弾の8近傍をプラス1していく C 取り除く辺を決めて,Union Findして連結判定する AtCoder ABC #075
B: マス目と駒 - AtCoder Regular Contest 038 | AtCoder メモ化全探索 こういうのは 最後の盤面の状態から決めて行くのがいいらしい. AtCoder ARC #038 B - マス目と駒
B: バウムテスト - AtCoder Regular Contest 037 | AtCoder Union Find でそれぞれの木を求め,深さ優先探索で閉路を検出し,閉路のないものの個数を出力. AtCoder ARC #037 B - バウムテスト
B: 山のデータ - AtCoder Regular Contest 036 | AtCoder ピーク位置を求めて,左斜面と右斜面の和 + 1 をそれぞれのピークについて計算し,その最大値を出力. AtCoder ARC #036 B - 山のデータ
B: アットコーダー王国のコンテスト事情 - AtCoder Regular Contest 035 | AtCoder 解くのにかかる時間が小さい方から解いた方がペナルティは少ない. 何通りあるかは,それぞれの問題数の階乗の積. AtCoder ARC #035 B - アットコーダー王国のコンテスト事…
B: 道路工事 - AtCoder Regular Contest 032 | AtCoder Union Find でグルーピングして グループの数を数えて グループ数 - 1 が答え AtCoder ARC #032 B - 道路工事
B: 埋め立て - AtCoder Regular Contest 031 | AtCoder 埋め立てる場所を全て試して,島の面積が総面積に等しくなったら YES 最後まで試して等しくなるところがなかったらNO AtCoder ARC #031 B - 埋め立て
二つの文章中に出てくる文字の頻度についての Jaccard 係数 を求める. set を使う. AtCoder ARC #033 B - メタ構文変数
B: ツリーグラフ - AtCoder Regular Contest 030 | AtCoder 再帰がうまく書けない 参考: http://arc030.contest.atcoder.jp/submissions/287007 AtCoder ARC #030 B - ツリーグラフ
C: 3 Steps - CODE FESTIVAL 2017 qual B | AtCoder 二部グラフかどうかで答えが変わる(あまり理解できていない). 二部グラフの判定は,蟻本より. 普通にやると再帰が深すぎてREになるので, RUBY_THREAD_VM_STACK_SIZE をいじる. Code Festival 2017 …
B - Problem Set T,D 両方ソートして,T と等しい D を小さい方から順に選んで行く. 配列から順番に値を取り出していって,空になったら終了. 一度選ばれなかったD は二度と選ばれることがない. Code Festival 2017 予選 B
解説を見て実装 bit を使って数え上げていてなるほどと思った. DDCC 2017 予選 D - 石