Xmas Contest 2018

Updated:

Xmas Contest 2018

特設ページ

Source codes

Solutions

A - Art Time

iPad Pro + Apple Pencil + Procreate でとにかく頑張って塗った。

A 解答

ポイント

何もない。今年のパズル枠。

B - Bit Smaller

考えたけどよくわからなかった。

ポイント

C - CombinatioN

1-緩和問題にみえたけどやめておいた。

ポイント

D - Devilish Dice

ポイント

E - Exclusive☆OR

ポイント

F - Fluffy Fox

全部交差させる。とりあえず $y$ 座標を $10^9$ と $-10^9$ で $x$ を左右に散らしていたんだけど、それだけだと交点が重なるので WA した。しかし $\lvert y \rvert$ を少しずつ減らせば AC した。

つまり、以下のようにする。

  for (auto i = 0; i < N; i++)
  {
    vector<P> v;
    lb -= 20;
    v.push_back(P(lb, -1000000000 + i));
    lb += 2;
    v.push_back(P(ub, 1000000000 - i));
    ub += 2;
    v.push_back(P(lb, -1000000000 + i));
    lb += 2;
    v.push_back(P(ub, 1000000000 - i));
    ub += 2;
    v.push_back(P(lb, -1000000000 + i));
    lb += 2;
    V.push_back(v);
  }

ポイント

早い段階で AC が出ていたので、全部交差するんだろうなと思っていたらやっぱりそうだった。 $3$ つの線分を同一の点で交差させないことが重要だと思っていたが、特に苦もなくクリアできた。

G - Good Game

部分点解法

後手を選んで $(r, c)$ を取られたら $(H - r - 1, W - c - 1)$ を取ればよろしい。こうすると、仮に後手に $2 \times 2$ ブロックができたとすると、その $1$ 手前に先手に $2 \times 2$ ブロックができているはずで矛盾する。つまりこのゲームは、先手が最善を尽くしたとしても全てのマスが埋まるので、先手が負ける。

満点解法

すぬけさんの記事を見れば一発でわかる。

実装においては、例えば typedef tuple<int, int> P; とし、 map<P, P> M; にペアリングを入れておき、 set<P> S; に残りのマスを入れておく。相手からきたマスを M に問い合わせて、なければ S から削除して、 S から $1$ 個出す。あれば M[p] を取り出す。

ポイント

H - Hello, Xmas Contest 2018

ポイント

I - Interesting Equation

$3$ 次方程式の解の公式($x = \alpha - y - z$ とするやつ)を考えながらやったが全然わからず。すごい難問のように思ったけど解きたかった。

ポイント

J - Japanese Exponentation

ポイント

Others