ferinの競プロ帳

競プロについてのメモ

2018-02-14から1日間の記事一覧

AOJ2299 Tiles are Colorful

問題ページ Tiles are Colorful | Aizu Online Judge 考えたこと Aを消すために消さないといけない色から有向辺を貼ってトポソを考える 2パターンあるのをトポソでわけて判断するの無理そう 各色のタイルの位置を求めておいて消せるタイルを消すを繰り返せば…

SRM654 div1 easy SquareScores

考えたこと 部分文字列[l,r]が同じ文字になる確率を考える ?がなくて全部同じ文字→1 違う文字が混ざっている→0 ?がm個で他が全部同じ文字c→(cの確率)^m 全部?でm個→sum(p[i]^m) よくよく考えると各部分文字列について独立っぽい 全ての部分文字列について確…

SRM653 div1 easy CountryGroupHard

考えたこと dp[i] = (i番目までで終わるパターン数) dp[i] = sum(dp[j]) (j<i, (j, i]が全員同じ国の条件を満たす) みたいな遷移をすればよさそう (j, i]が条件を満たすのは質問に答えた人がいない or 質問に答えた人が全員同じ人数でi-jと等しいとき dp[n-1] = 1 なら確定できるのでsufficient DP遷移で頭爆発して実装に手間取った、むずかしい #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> VI; type…</int></i,>

SRM652 div1 easy ThePermutationGame

考えたこと 巡回置換を何回やったら1に戻ってくるか 長さNのとき周期1,2,…,Nで1にループする したがってxはlcm(1,2,…,N)になる x*y/gcd(x,y)を使ってlcmを求めようとするとMODでうまくいかない 1~Nを素因数分解してそれぞれの素因数について出現数のmaxを数…

SRM651 div1 easy RobotOnMoon

考えたこと Sと同じ列、行のどこかに一つでも'#'があればそこに向かって永遠に動けばいいので-1 これ以外のときは最初の位置から進み続けて落ちないぎりぎりの回数各方向に移動するのが上限になるはず この移動方法で途中で落ちるような部分列はありえない #…