AtCoder Beginner Contest 189のきろく
AtCoder Beginner Contest 189に参加して青色になることができました。コンテストから1週間たっていますが、この回から参戦記を書いていきたいと思います。
- A - Slot (100点)
- B - Alcoholic (200点)
- C - Mandarin Orange (300点、実行時間制限: 1.5 sec)
- D - Logical Expression (400点)
- E - Rotate and Flip (500点)
- F - Sugoroku2 (600点)
- 結果、感想
A - Slot (100点)
std::string
型の変数で受け取り、全て同じか調べる。
C++だとC[0] == C[1] == C[2]
のような書き方はできないので2つの条件文に分割する。
A問題は1分切れるぐらいになりたいなぁ...
B - Alcoholic (200点)
となるような最小の を求める問題。小数で計算すると誤差が出るかもしれないので両辺を100倍して として判定すればいい。
C - Mandarin Orange (300点、実行時間制限: 1.5 sec)
区間 を決めればは1からその区間内の最小値をとれるが、 の最大値を求める問題なので、その区間内の最小値にすればいい。区間を決めた後その中の最小値を探しているのでは で間に合わないと思って先にD問題へ。先に を決めておいて を大きくしながら を更新しつつ の最大値を求めていけばいいことに気が付いて戻ってきて通す。
D - Logical Expression (400点)
見た瞬間DPだなと思う。演算 がAND
なら と の両方が なら 、そうでなければ 。OR
のときは と の両方が なら 、そうでなければ となるので $$ {\mathrm{dp}}_{i,j} = \left(y_i=\left\{
\begin{array}{ll}
\mathrm{False} & (j = 0)\\
\mathrm{True} & (j = 1)
\end{array}
\right. \text{となるような \((x_0, \dots, x_i)\) の組の数}\right) $$ として
$$ {\mathrm{dp}}_{0,0} = {\mathrm{dp}}_{0,1} = 1 $$
$$ {\mathrm{dp}}_{i,0} =\left\{
\begin{array}{ll}
2{\mathrm{dp}}_{i-1,0} + {\mathrm{dp}}_{i-1,1} & (S_i = \texttt{"AND"})\\
{\mathrm{dp}}_{i-1,0} & (S_i = \texttt{"OR"})
\end{array}
\right. $$
$$ {\mathrm{dp}}_{i,1} =\left\{
\begin{array}{ll}
{\mathrm{dp}}_{i-1,1} & (S_i = \texttt{"AND"})\\
{\mathrm{dp}}_{i-1,0} + 2{\mathrm{dp}}_{i-1,1} & (S_i = \texttt{"OR"})
\end{array}
\right. $$ という漸化式に従って順に計算する。求める答えは です。
E - Rotate and Flip (500点)
元の座標を として
操作が3
なら操作後は 、4
なら で...とうんうん考えていたらこれらは軸についての対称移動と平行移動で表せられるなぁ、となりました。回転と対称移動は1次変換であるのでこれはアフィン変換かぁと思いましたが、それを行列で表現できないかと思って調べて提出しました。
このアフィン変換については別記事にて。
F - Sugoroku2 (600点)
全く分かんねぇぜ、とりあえず「すごろく 振り出し 期待値」で検索するとふか杯5thのE問題とその解説ページが見つかりました。このE問題は各マスが、「何も起こらない」「振り出しに戻る」「 マス進む」のいずれかという問題でその解法を参考にして実装し、提出しました。
$$
f_i = (\text{マス \(i\) からゴールするまでにルーレットを回す回数の期待値})
$$ として、振り出しに戻るがなければ ですが、振り出しに戻るというますがあるのでうまくいきません。 と1次式の形で考えると
ここで より答えは です( が の時はゴールに到達不可能)。
結果、感想
久しぶりの全完でした。本番で黄Diffの問題を解けるとは思いませんでした。F問題がACになった時にレート変化の推定値が1650越えでパフォ推定値が2350越えだったので「マジで!?」って叫んでしまいました。こっから黄色になるは難しいですがこれからも頑張っていこうと思います。