A | B | C | D | E | F | G |
---|---|---|---|---|---|---|
AC | AC | AC | AC | - | - | - |
์กฐ๊ฑด์ ๋ง๊ฒ Takahashi๊ฐ ๊ณ๋จ์ ํ์ง ์๋ฒ ๋ฅผ ํ์ง ๊ฒฐ์ ํด์ฃผ๋ฉด ๋๋ค.
๋ฌธ์ ์์ ํญ์ ์ด๋ฐ ์ซ์๊ฐ ์กด์ฌํ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๊ตฌํํ๋ฉด ๋์๋ค. ์ฆ๋ช ํ๋ผ๊ณ ํ๋ฉด ์ฝ์ง ์์ ๋ฏ.
N์ ๋ฒ์๊ฐ ์ด๊ณ , ์ซ์์ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์, ์ ๋ ฌ ํ lower_bound
๋ฅผ ํตํด ์ ์ ํ ๊ตฌ๊ฐ ์์ ์ํ ์์๋ค์ ์๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋๋ ๋ฌธ์ ์๋ค. ๋ง์ฝ ์ซ์์ ๋ฒ์๊ฐ ์๋ค๋ฉด ์ํ์ด ์คํ๋ ค ๋น ๋ฅผ ์๋ ์์ง๋ง ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ์๋ ์๋์๋ค.
์กฐ๊ธ ๊น๋ค๋ก์ด ์กฐ๊ฑด์ ๋ฌธ์ ์๋ค. ๊ฐ์ง์น๊ธฐ dfs๋ก ์ ๊ทผํ๋๋ฐ ํ์ด๊ฐ ๋์ ์ ๋์ ์ ๊ฑฐ๋ญํ ๊ฐ์ด๋ฐ ์ข ๋ฃ 5๋ถ์ ์ ์ ์ถ ํ ์ ์์๋ค. ๋๋ถ์ ๋ค๋ฅธ ๋ฌธ์ ๋ค๋ ํ๋งํ ๊ฒ๋ค์ด์๋๋ฐ ํ ์๊ฐ์ด ์์๋ค..
์ฒ์์ dfs๋ฅผ 2๊ฐ๋ก ๋๋์ด ์๊ฐํ์ง๋ง ์ด๊ฒ์ ์คํ๋ ค ํจ์ฐฉ์ด์๋ค. ๊ฐ๋จํ ์กฐ๊ฑด์ผ๋ก ํธ๋๊ฒ ํญ์ ์ณ๋ค. ๊ทธ๋ฅ -> ๋ก ์ ์ด ์ํค๊ณ , == ์ด ๋ ๋ ๋ค์ row๋ก ๊ฐ๊ฒ ํ๋ dfs๊ฐ ์ ํจํ๋ค. ๋ค์์๋ ์ด๋ฐ ์ ํ ๋์ฌ ๋ ๋๋ฌด ์ด๋ ต๊ฒ ์ ๊ทผํ์ง ๋ง์..
๊ธฐ๋๊ฐ DP
์ ํ ์ด๋ผ๊ณ ํ๋ค. ๋ฌธ์ ๋ด์์ Modular Inverse
๋ ์๊ตฌํ๋ ๋ฑ ์๋นํ ๋ฐฑ์ค์์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๊ธฐ๋ ์ด๋ ค์ด ์ ํ์ด๋ค. ์๋ํ ๋ฆฌ์ผ์ ๋ณด๊ณ ํ์ด๋ฅผ ์ ๋ฆฌํด๋ณธ๋ค.
์ฐ์ , ๊ธฐ๋๊ฐ
์ ๋ฐ๋ก ๊ตฌํ๊ธฐ์๋ ๋์ด๋๊ฐ ์๋ค. ๊ธฐ๋๊ฐ
์ ๊ตฌํ๊ธฐ ์ด์ ์, ํ๋ฅ ์ ๋จผ์ ๊ตฌํด๋ณด๋๋ก ํ์. ๋ฅผ ์์ด ์ง๊ธ๋์์ ๋์ ํ๋ฅ ์ด๋ผ๊ณ ํ์. ํธ์์ ๋ก ์ ์ํ์. ๊ทธ๋ฌ๋ฉด, ๋ค์์ ์ป์ ์ ์๋ค๊ณ ํ๋ค.
์ ์์์ ์ฒ์๋ถํฐ ์๊ฐํ๊ธฐ ์ด๋ ต๋ค. small to large
ํด๋ณด์. ๋ง์ฝ ์ด๋ผ๋ฉด ์๋ช
ํ๊ฒ ์ด๋ค. ๋ผ๋ฉด ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ชจ๋ ํ๋ฅ ์ ํฉ์ด ์ด ๋์ง ์์๋ค๊ณ ํด์ ๋นํฉํ ํ์๋ ์๋ค. ์ง๊ธ ๋ชจ๋ ํ๋ฅ ์ด ๋ ๋ฆฝ์ธ ๊ฒฝ์ฐ๋ฅผ ๋ค๋ฃจ๊ณ ์๋ ๊ฒ์ด ์๋๋ค. ๋ฅผ ์์ด ์ง๊ธ๋์์ ๋์ ํ๋ฅ ์ด๋ผ๊ณ ์ ์ํ๊ณ ์๋ค. (์ค์ ๊ธฐ๋๊ฐ์ ๊ตฌํ๊ธฐ ์ฉ์ดํ๋๋ก) ์ธ ๊ฒฝ์ฐ๋ฅผ ํ๋ฒ ๋ ์๊ฐํด๋ณด์.
์ฌ๊ธฐ์ ์ ํ์ฌ ๊ฐ ๋์ค๊ฒ ๋ ํ๋ฅ , ๊ทธ๋ฆฌ๊ณ ๊ดํธ ์์ ๋ค์ด๊ฐ ์ซ์๋ค์ ํฉ์ ๊ทธ ์ ๋๊ธ๋ค์ ๊ฐ ์๋ ์ํ๋ค์ ํฉ์ด๋ค. ์์์ด ์ด๋ ค์ธ ๋ฟ DP ์ํ์ ์ด
๋ฅผ ์๋ฒฝํ๊ฒ ๋ํ๋ธ ํํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๋ํ ์ ์์์ ๋์ ํฉ์ ํ์ฉํด ์ ๊ณ์ฐํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์์ ์ต์ข ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ๊ฐ์ ๊ธฐ๋๊ฐ์ด๊ณ , ๊ธฐ๋๊ฐ์ ์ ์์ ์ํด ์๋์ฒ๋ผ ๊ตฌํ ์ ์๋ค.
์ ์ฌ์ค๋ค์ ์กฐํฉํ๊ณ , Modular Inverse
๋ฅผ ์ด์ฉํด ์ต์ข
์ ์ธ ๋ต์ ๊ตฌํ ์ ์๋ค. ๋ฌธ์ ์์ ๋์จ ๋ผ๋ ์๋ AtCoder
์์ ์ข์ํ๋ ์์์ธ ๋ฏ ํ๋ค. ์ด ์ฒด
์์ ์ ์๋์ ๊ฐ์ด ๊ตฌํ ์ ์๋ค. getInv(N)
์ผ๋ก ๊ตฌํ๋ฉด ๋๋ค.
ll fastPow(ll a, ll p) {ll res = 1LL;while (p) {if (p & 1LL) res = res * a % MOD;a = a * a % MOD;p >>= 1LL;}return res;}ll getInv(ll v) {return fastPow(v, MOD - 2);}
์กฐ๊ฑด์์ MITM
์ ๋์๋ฅผ ๊ฐํ๊ฒ ๋๊ผ์ง๋ง, ํ์ ์ ์์๋ค. ๋ฐฉํฅ์ด 2๋ฐฉํฅ์ด๋ผ ์๋ฐฉํฅ์์ ์ถ๋ฐํ๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ ์ด๊ณ ์ด๋ ๊ฝค ํฐ ์์ด๊ธฐ ๋๋ฌธ.. ์ด ํ์ด๊ฐ ์ ํจํ์ง ํ๋ฒ ๋์ ํด๋ณด๋ ค๊ณ ํ๋ค. (์๋๋ฉด ์ด์ฉ ์ ์๊ณ ..)
๊ด์ฐฐํด๋ณด๋ฉด, ์ฐ์ ์ฒ์ ๋ก๋ด์ ๋ฐฉํฅ์ ์์ x์ถ์ด๋ค. ๊ทธ๋ฆฌ๊ณ 90๋์ฉ๋ง ์ข์ฐ๋ก ํ์ ์ ํ๋ฏ๋ก, ๊ฐ ํ์์ธ ํญ์ ์ขํ๋ฅผ, ๊ฐ ์ง์์ธ ํญ์ ์ขํ๋ฅผ ๊ฒฐ์ ์ง๋๋ค๋ ์ฌ์ค์ ๋จผ์ ๊ด์ฐฐํ ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ฐ์ ๊ฐ ์ถ์ผ๋ก์ ์ขํ๊ฐ ์ผ๋ก ์ค์ด๋ ๋ค. ์ด ์ํ์์ MITM
์ ์ ์ฉํ๋ฉด ์ ๋์ ํ ์ ์๊ณ ์ด๋ ํด๋ณผ๋ง ํ๋ค. ๋์ฐฉ ์ขํ๋ฅผ ์๊ณ ์์ผ๋ฏ๋ก ์์ ๊ณผ, ๋์ฐฉ ์ขํ ์์ชฝ์์ MITM
์ ์ ์ฉํ๋ฉด ํ๋ฆฐ๋ค.
...๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ๊น์ง ํ๊ณ ๋๋ด๋ฉด ์ฌ์ค
์ ๋์ ๋์ด๋์ผ ์ ์๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋๊ฒฝ๋ก ๋ณต์
๊น์ง ์๊ตฌํ๋ค. MITM
์ ํ๋ฉด์, ๋๋ฌํ ๊ฒฝ๋ก๋ฅผ ์ ์ ์ฅํ๋ค๊ฐ ๋ณต์ํด์ค์ผ ํ๋ ๋ก์ง์ด ์ถ๊ฐ๋๋ค.
๋ค์ ๋ณต์กํ MITM
์ด๊ณ , ์๋์ ํ์ด๋ฅผ ์ ๋ฆฌํด๋๋ค. ์๊ฐ๋ณต์ก๋๋ ์ด ๋๋ค. (๋ด ์ค์ ํ์ด๋ ๋ก๊ทธ๊ฐ ํ๋ ๋ ๋ถ๊ธดํ๋๋ฐ ๋์ธ์ ์ง์ฅ์ ์๋ค)
Editorial์ ๋ณด๋ ์ ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. Upsolving์ ํด๋ณผ๊น..?