• toc {:toc}

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
Ti3511242
Pi102010201540200

ํ•ด๋‹น ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด๋ฉด ๊ฒฐ๊ตญ ๊ณ„์†ํ•ด์„œ ๋ˆ„์ ์œผ๋กœ ์ตœ๋Œ€์˜ ์ˆ˜์ต์„ ๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
์–ด๋–ค ๋‚ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•  ์ง€๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์œผ๋กœ ํ™•์ธํ•ด์ค˜์•ผ ํ•œ๋‹ค. ํ•ด๋‹น ์˜ˆ์‹œ์—์„œ ์ตœ๋Œ€๋Š” 1 ์ผ, 4 ์ผ, 5 ์ผ์˜ ๊ฒฝ์šฐ 45 ๋กœ ์ตœ๋Œ€๊ฐ€ ๋œ๋‹ค.

์ตœ๋Œ“๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ๊ฐฑ์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ์‹œ์ ์˜ ์ตœ๋Œ“๊ฐ’์„ res ๋กœ dp ์— ๊ฐฑ์‹ ํ•ด์ค€๋‹ค. ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•  ๋•Œ ์ˆ˜์ต์„ ๋ฐ›๋Š” ์‹œ์ ์€ ์ƒ๋‹ด์„ T ์ผ ๋™์•ˆ ์ง„ํ–‰ํ•œ ํ›„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋๋‚œ ์‹œ์ ์˜ dp ์— ์ €์žฅํ•ด์ฃผ๊ณ , ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ dp ๋ฅผ ๊ฐฑ์‹ ํ•ด๋‚˜๊ฐ„๋‹ค.

  • 1 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp00010000

res = 0

  • 2 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp000100020

res = 0

  • 3 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp000100020

res = 0

3 ์ผ ์ƒ๋‹ด์˜ ๊ฒฝ์šฐ 3 ์ผ ํ•˜๋ฃจ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•˜๊ณ  4 ์ผ์— ์ˆ˜์ต์„ ์–ป๋Š”๋‹ค. ์ด ๋•Œ ์–ป์€ ์ˆ˜์ต์ด ์ด์ „์— ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ˆ˜์ต๋ณด๋‹ค ๋†’์€์ง€ ๋‚ฎ์€์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ๋†’์œผ๋ฉด ๊ฐฑ์‹ , ๋‚ฎ์œผ๋ฉด ํ†ต๊ณผํ•œ๋‹ค.

  • 4 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp0001030020

res = 10

4 ์ผ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•˜๋ฉด 4 ์ผ ํ•˜๋ฃจ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•˜๊ณ  5 ์ผ์— ์ˆ˜์ต +20 ์ด ๋œ๋‹ค. ์ด ๋•Œ, ์ด์ „์— ์–ป์—ˆ๋˜ ์ˆ˜์ต์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[5] ์—์„œ dp[4] ์˜ ๊ฐ’๊ณผ 4 ์ผ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•˜๊ณ  ๋‚œ ๋’ค์˜ ์ˆ˜์ต 20 ์„ ๋”ํ•ด 30 ์„ ์ €์žฅํ•œ๋‹ค.

  • 5 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp0001030045

res = 30

5 ์ผ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•˜๋ฉด ์ดํ‹€์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[7] ์— ์ˆ˜์ต์ด ์ €์žฅ๋œ๋‹ค. +15 ๋ฅผ ํ†ตํ•ด 45 ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ด ๋•Œ๋„ ์ด์ „์— ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ˆ˜์ต๋ณด๋‹ค ๋†’์€์ง€ ๋‚ฎ์€์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋†’์œผ๋ฉด ๊ฐฑ์‹ , ๋‚ฎ์œผ๋ฉด ํ†ต๊ณผ์‹œํ‚จ๋‹ค.

  • 6 ์ผ ์ƒ๋‹ด ์ง„ํ–‰
1 ์ผ2 ์ผ3 ์ผ4 ์ผ5 ์ผ6 ์ผ7 ์ผ
dp00010303045

res = 30

6 ์ผ์˜ ๊ฒฝ์šฐ 8 ์ผ์— ํ‡ด์‚ฌ๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ 4 ์ผ ๋™์•ˆ ์ƒ๋‹ดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ†ต๊ณผ์‹œํ‚จ๋‹ค. n+1 ์ผ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ํ†ต๊ณผ์‹œํ‚ค๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘ ์ตœ๋Œ€ ์ˆ˜์ต์„ ์–ป๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ตœ๋Œ“๊ฐ’์„ dp ์— ๊ณ„์† ๊ฐฑ์‹ ์„ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— dp[6] ์—๋„ ์ตœ๋Œ“๊ฐ’์ธ res=30 ์„ ์ €์žฅํ•œ๋‹ค.

  • 7 ์ผ ์ƒ๋‹ด ์ง„ํ–‰

7 ์ผ์˜ ๊ฒฝ์šฐ์—๋„ ์ƒ๋‹ด์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— dp ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
 
int T[1500005], P[1500005], res=0;
int dp[1500005];
 
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
 
    int n;
 
    cin >> n;
 
    for(int i=1; i<=n; i++){
        cin >> T[i] >> P[i];
    }
 
    for(int i=1; i<=n+1; i++){
        dp[i] = max(dp[i], res);
        if(i+T[i] < n+1 && dp[i]+P[i] > dp[i+T[i]]){
            dp[i+T[i]] = dp[i] + P[i];
        }
        res = max(dp[i], res);
    }
 
    cout << res << endl;
 
    return 0;
}