pekempeyのブログ

競技プログラミングに関する話題を書いていきます。

Codeforces Round #332 (Div. 2) D. Spongebob and Squares

問題文

http://codeforces.com/contest/599/problem/D

解法

幅$w$、高さ$h$,$h\le w$の長方形の中に正方形は$h(h+1)(3w-h+1)/6$個ある。そのため、

$$ \frac{h(h+1)(3w-h+1)}{6}=x $$

を満たす$w,h$を求める問題に帰着できる。

$6x=pq$とすると、$h=p,\; (h+1)(3w-h+1)=q$なので、 $$h=p,\;w=\frac{p^2+q-1}{3(p+1)}$$

とわかる。$h\le w$なので$w=(p^2+q-1)/3(p+1) \ge p=h $が成り立つ。よって

$$ 6x = pq \ge 2p^3+3p^2+p $$

という条件が導ける。$p=3\cdot10^6$は条件を満たさないので、$p\le3\cdot10^6$までを全探索すればいい。

Codeforces Round #332 (Div. 2) D. Spongebob and Sq ...

 感想

$x=wh(h+1)/2+h(h-1)(h+1)/6$を使った方が上の議論はシンプルになると思う。ぱっと見は$O(\sqrt{n})$だけどよく考えると$O(\sqrt[3]{n})$という問題をSRMで解いてたので割りとすぐ気づけた。