2019/2/17

2019/2/17

全国統一プログラミング王決定戦本番 D

問題文

毎時刻1ずつ伸びるN本の竹が一列に並んでおり、M回時刻TにLからRまでを伐採する
伐採した竹の長さの総和を求める問題

毎時刻等しく1ずつ伸びるため、一番最後の高さがわかれば、その竹の伐採された長さの総和がわかる
最終時刻Lにおける竹の長さをA_iとすると
Σ(L - A_i)が答え
竹の高さの初期値は0であるから最後に切られた時刻がそのままA_iとなる
maxでの区間更新、maxでの点取得ができれば良いので、遅延セグ木を使えばO((N + M)logN)

2019/1/30

2019/1/30

全国統一プログラミング王決定戦予選 E

辺は重みの昇順でソートし、union findで連結成分に頂点の重み辺の重みの最大追加時点で頂点の重みよりも大きかった辺の数を持たせる。
追加した辺が連結成分の重み以下だった場合、その連結成分内の辺は全て条件を満たす(昇順であるため)。
そうでない場合、その辺は最終的に使えない可能性があるので個数を保持しておく。
辺の追加の度に現在条件を満たす辺の数を計算することができるのでそれが答えとなる。

2019/1/6

2019/1/6

CodeForces #530 div2

各頂点vに数字a_v(>=0)が振られた根付き木があり、
各頂点vの根からの経路中の頂点のaの和、s_vが与えられる
ただし、深さ(根からの距離+1)が偶数の頂点はs_vが消されている
各s_vに矛盾しないようなa_vを計算し、ありうる中の最小のsum(a_v)を求める問題

ある頂点vの親をpとしたとき、s_p、s_vがわかっていればa_v = s_v - s_pである
s_vがわかっていない場合は、vの子のsはわかっているためa_vは条件を満たす中の最大であるmin(s_(vの子) - s_p)となるのが最適
a_vがわかればs_vも確定するため、根から上の処理を子に向かって行なっていけばよい

2018/12/28

2018/12/28

AGC011 B

Nと要素数N個の数列Aが与えられる
A_i*2 >= A_jであるようなi, jがあるならばiはjを食べることができ、A_iにA_jを加算する
i = 0, 1, 2, ..のうち、そのiが他の数列全てを食べることができるようなものの数を求める問題
A_i < A_jかつiが条件を満たすならばjも条件をみたす
よって条件を満たさなくなるような境界を求めればよく、二部探索で求められる

2018/12/27

2018/12/27

CodeForces #527 D1

N個の整数A[i]が与えられる
以下の操作を任意回行なって、全てのiに対してA[i] = B(Bは任意の定数)を達成できるかを判定する

  • A[i] += 2
  • if (A[i] == A[i + 1]) A[i] = A[i + 1] = A[i] + 1

2を任意回加算できることから、後者の操作のみで数列の偶奇を合わせることができるかを判定すれば良い
後者の操作をうまく行うことで、1(00)*1であるような数列(mod 2)は00..00にすることができる
また、1(00)*100..00の操作でできる数列は2の倍数の長さになることから、以下のような挟んだ形も処理できることがわかる

10100101
10000001
00000000

よって、スタックで前の1の位置を保持して都度処理をすることで00..00にできるかの判定をすることができる
11..11にできるかについても同様に判定できるので両方で判定を行い、どちらかで可能であればYES、そうでなければNOとすれば良い

2018/12/24

2018/12/24

CODE THANKS FESTIVAL 2018 F

木の上を操作する回数は深さと同じなので、前から貪欲に以降解が構築できるかの判定を逐次行うことで最小の解が構成できる。
解の存在は部分和問題のように見えるが、Nが選べるならN-1が選べるので選べるものの最小と最大を見れば良い。

clog

clog

ブログサービスの開発ログ

2018/12/9

twitter cardに対応した

2018/12/6

サーバー側のリファクタリング

その他

  • 記事にプロジェクト内番号の付与
  • created_atにon updateがついていたのを修正
  • /api/v1/projects/:projectId/post?id=を追加

2018/12/2

TODO

  • クライアント
  • サーバー

2018/9/18

  • 文章中に画像を追加しやすく
  • 単一記事へのURL

2018/9/9

  • markdownのパーサーをmarkedからmarkdown-itに変更した
    • markedだと改行でpタグが分割されなかったため
  • highlight.jsを導入した
{
  "json": "hoge"
}

2018/9/6

投稿フォームを追加

 

2018/09/05

サムネイル