PS & BOJ

BOJ 15486 - 퇴사 2

playdeom 2024. 7. 7. 00:59

매우 쉽게 점화식이 나와서 기분이 좋았던 문제다.

 

i일에 일을 받아서 작업을 하면 i+t[i]일에 p[i]원을 받는다.

일을 받지 않고 다음날로 가는 경우에는 dp[i+1]=max(dp[i+1],dp[i])

일을 받아서 하는 경우에는 dp[i+t[i]]=max(dp[i+t[i]],dp[i]+p[i])

 

n+1일까지 일을 할 수 있으므로 dp[n+1]이 구하고자 하는 값이다.

 

더보기
int main() {
	fastio;
	int n;
    cin>>n;
    vector<pair<int,int>>arr(n);
    for(auto&[a,b]:arr)cin>>a>>b;
    vector<int>dp(1500001,0);
    for(int i=1; i<=n; i++){
        dp[i+1]=max(dp[i+1],dp[i]);
        dp[i+arr[i-1].first]=max(dp[i+arr[i-1].first],dp[i]+arr[i-1].second);
    }
    cout<<dp[n+1];
	return 0;
}

'PS & BOJ' 카테고리의 다른 글

골드 정복기 (gold 5~3)  (0) 2024.08.21
BOJ 2631 - 줄 세우기  (0) 2024.07.07
DP 공부(1)  (0) 2024.07.06
BOJ 16225 - 제271회 웰노운컵  (0) 2024.05.10
BOJ 13873 - Hotel Rewards  (0) 2024.05.09