๋ฌธ์
https://www.acmicpc.net/problem/10942
๋ฌธ์
๋ช ์ฐ๋ ํ์ค์ด์ ํจ๊ป ํฐ๋ฆฐ๋๋กฌ ๋์ด๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค.
๋จผ์ , ํ์ค์ด๋ ์์ฐ์ N๊ฐ๋ฅผ ์น ํ์ ์ ๋๋ค. ๊ทธ ๋ค์, ๋ช ์ฐ์๊ฒ ์ง๋ฌธ์ ์ด M๋ฒ ํ๋ค.
๊ฐ ์ง๋ฌธ์ ๋ ์ ์ S์ E๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, S๋ฒ์งธ ์๋ถํฐ E๋ฒ์งธ ๊น์ง ์๊ฐ ํฐ๋ฆฐ๋๋กฌ์ ์ด๋ฃจ๋์ง๋ฅผ ๋ฌผ์ด๋ณด๋ฉฐ, ๋ช ์ฐ๋ ๊ฐ ์ง๋ฌธ์ ๋ํด ํฐ๋ฆฐ๋๋กฌ์ด๋ค ๋๋ ์๋๋ค๋ฅผ ๋งํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ํ์ค์ด๊ฐ ์น ํ์ ์ ์ ์๊ฐ 1, 2, 1, 3, 1, 2, 1๋ผ๊ณ ํ์.
S = 1, E = 3์ธ ๊ฒฝ์ฐ 1, 2, 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
S = 2, E = 5์ธ ๊ฒฝ์ฐ 2, 1, 3, 1์ ํฐ๋ฆฐ๋๋กฌ์ด ์๋๋ค.
S = 3, E = 3์ธ ๊ฒฝ์ฐ 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
S = 5, E = 7์ธ ๊ฒฝ์ฐ 1, 2, 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
์์ฐ์ N๊ฐ์ ์ง๋ฌธ M๊ฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ก์ ๋, ๋ช ์ฐ์ ๋๋ต์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด์ ํฌ๊ธฐ N (1 โค N โค 2,000)์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค์๋ ํ์ค์ด๊ฐ ์น ํ์ ์ ์ ์ N๊ฐ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์น ํ์ ์ ์ ์๋ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ ์งธ ์ค์๋ ํ์ค์ด๊ฐ ํ ์ง๋ฌธ์ ๊ฐ์ M (1 โค M โค 1,000,000)์ด ์ฃผ์ด์ง๋ค.
๋ท์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํ์ค์ด๊ฐ ๋ช ์ฐ์๊ฒ ํ ์ง๋ฌธ S์ E๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด M๊ฐ์ ์ค์ ๊ฑธ์ณ ํ์ค์ด์ ์ง๋ฌธ์ ๋ํ ๋ช ์ฐ์ ๋ต์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์์์ ๋ฐ๋ผ์ ์ถ๋ ฅํ๋ค. ํฐ๋ฆฐ๋๋กฌ์ธ ๊ฒฝ์ฐ์๋ 1, ์๋ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ค.
ํ์ด๊ณผ์
1.๊ท์น
- dp์ด๋ฏ๋ก ์ ํ์๊ณผ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ด์ฉํฉ๋๋ค.
- ์์ด์ ํฌ๊ธฐ๋ N (1 โค N โค 2,000) ์ด๊ณ , ํ์ค์ ์ง๋ฌธ๊ฐฏ์๋ M (1 โค M โค 1,000,000) ์ ๋๋ค.
- ์๊ฐ ์ ํ : 0.5 ์ด, ๋ฉ๋ชจ๋ฆฌ ์ ํ : 256 MB ์ ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ ์ง์์ ๋ฐ๋ฉด 0.5์ด๋ผ๋ ์๊ฐ์ ํ์ด ์์ผ๋ฏ๋ก ์ต๋ํ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์ ํํฉ๋๋ค.
2.์์
์ ๊ฒฝ์ฐ, ๋จ์ํ for๋ฌธ ํ ๋ฆฐ๋๋กฌ์ฝ๋๋ฅผ ์ธ์ฐ๊ณ ์๋๊ฒ์ด ๋ ์ด ๋์์ต๋๋ค.
dp๋ก ํ๋ ค๋ฉด ์์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. T_T
dp๋ก ์์ด์ S~E๊ฐ ํ ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๋ ๊ฒฝ์ฐ๋ 3๊ฐ์ง ์ ๋๋ค.
1. ์์๊ณผ ๋์ด ๊ฐ์๊ฒฝ์ฐ(๊ธธ์ด๊ฐ 0)
2. ์์๊ณผ ๋์ ์ฐจ์ด๊ฐ 1์ผ ๊ฒฝ์ฐ(๊ธธ์ด๊ฐ 1)
3. ์์๊ณผ ๋์ ์ฐจ์ด๊ฐ 2์ด์์ผ ๊ฒฝ์ฐ(๊ธธ์ด๊ฐ 2์ด์)
3๋ฒ์ ๊ฒฝ์ฐ, ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด
์์๋ก ์งํํ๋ฏ๋ก, ์ ํ์์
1. d[n][n] = 1
2. (n๋ 1~N-1) d[n]์ d[n+1]์ด ๊ฐ๋ค๋ฉด, d[n][n+1] = 1
3. (n๋ 2~N-1 , m์ 1~N-n) pld[m] == pld[n+m] ์ด๊ณ , d[m+1][n+m-1]๊ฐ 1์ด๋ผ๋ฉด, d[m][n+m] = 1
3.์ฝ๋
'๐ค PS(Problem Solving) > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/c++] 1509๋ฒ - ํฐ๋ฆฐ๋๋กฌ ๋ถํ (0) | 2019.08.09 |
---|---|
[๋ฐฑ์ค/c++] 10828๋ฒ - ์คํ (0) | 2019.08.06 |
[๋ฐฑ์ค/c++] 1890๋ฒ - ์ ํ (0) | 2019.08.03 |
[๋ฐฑ์ค/c++] 11048๋ฒ - ์ด๋ํ๊ธฐ (0) | 2019.08.02 |
[๋ฐฑ์ค/c++] 11004๋ฒ - K๋ฒ์งธ ์ (0) | 2019.08.02 |