"Icosahedron"なら20面体である。Classeshttp://codeforces.com/contest/785/problem/BN個のチェスの授業、M個のプログラミングの授業がある。各授業で開始時間と終了時間が決まっている。Talehttp://codeforces.com/contest/785/problem/CN個収容できる倉庫がある(最初はN個入っている)。以下の行動が毎日繰り返される時、何日目で終了するか。2http://codeforces.com/contest/785/problem/D文字列Sの(非連続OKの)部分列のうち、RSBSである部分列は何通りあるか(mod10^9+7)。これについてQ個の以下のクエリを処理する。Polyhedronshttp://codeforces.com/contest/785/submission/25502869各立体についてmapを用意しておいて、面数を足して答える。Talehttp://codeforces.com/contest/785/submission/25511808まず、M日目までは取り出して入れると倉庫にはN個入っている。M+i日目では取り出して入れると倉庫にはN-(1+2+...+i)個入っている。この考察を前提に場合分けして解く。とき1~N-1日目では倉庫の中身はN個で変化しない。N日目で倉庫の中身が全て無くなり、終了する。とき1~M日目では倉庫の中身はN個で変化しない。ここでは、M+i日目で始めてN-(1+2+...+i-1)-(M+i)が0以下となるiが求まれば、M+iが答え。(最後のM+iだけ別になっているのは操作1だけして操作2をしないから)これは二分探索で解く。2http://codeforces.com/contest/785/submission/25528993端から全列挙していくことを考える。重複しないように一部を固定して列挙していく方針で考える。i]番目の文字の'('と[i+1,N-1]番目の文字の')'を使ってRSBSとなる組合せを考えるが、条件を付けないとダブって数えてしまうため、S[i]番目の文字列が'('であり、この文字は必ず使うという条件を入れておく。i-1]番目の文字の任意個の'('とi番目の'('と[i+1,N-1]番目の文字の任意個の')'を使ってRSBSとなる組合せ」を順次計算していく。[0,i-1]での'('の個数をL個、[i+1,N-1]での')'の個数をR個とする。これは上手いこと計算する(うまいこと)。ここで作ることのできるRSBSの長さは2*min(L+1,R)となるので、このRSBSの組合せを全て数え上げる。具体的にはソースコードのnaive解法のようにやる。2017年3月15日であり、以上のツイートのように変換できる(よく分かっていない)ので、数え上げがO(1)でできる。2017年3月15日であり、wolframalphaに頼る。あとはこれの総和を取れば答え。Permutationkmjpさんの解法をそのまま解読して書いた。数列をAとして、i個のクエリについて以下の処理を行う。Rとなるようにswapしておく。invを出力なので、区間である数より大きい数、小さい数である要素数を数えられる、かつ、数をswap(変更)できるデータ構造があればOKこれは、平方分割を使う(らしい。分かってない)流石に自分の解答乗せるのはおこがましいので、kmjpさんの解法はこちら。natsugiriさんは2Dセグメントツリー???http://codeforces.com/contest/785/submission/25528708思い思いの実装をされてますけど、何一つ分からん。平衡二分木をちゃんと勉強しなきゃいけない。~平衡二分探索木編~平衡二分木で何ができるのかがよく分かってない。F]月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。