| //https://www.acmicpc.net/problem/2616 |
| #include <iostream> |
| #include <algorithm> |
| using namespace std; |
| int dp[4][50001]; |
| int train[50001]; |
| int main() |
| { |
| int n,m; |
| cin >> n; |
| for(int i=1; i<=n; i++) |
| { |
| int x; |
| cin >> x; |
| train[i]=train[i-1]+x; |
| } |
| cin >> m; |
| for(int i=1*m; i<=n; i++) |
| dp[1][i]=max(train[i]-train[i-m],dp[1][i-1]); |
| for(int i=2*m; i<=n; i++) |
| dp[2][i]=max(train[i]-train[i-m]+dp[1][i-m],dp[2][i-1]); |
| for(int i=3*m; i<=n; i++) |
| dp[3][i]=max(train[i]-train[i-m]+dp[2][i-m],dp[3][i-1]); |
| cout << dp[3][n]; |
| } |
엉망진창으로 풀었네..
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 180126_1065_한수 (0) | 2018.01.26 |
|---|---|
| 180126_2819_격자판의 숫자 이어 붙이기 (0) | 2018.01.26 |
| 180126_1328_고층 빌딩 (0) | 2018.01.26 |
| 180125_10835_카드게임 (0) | 2018.01.25 |
| 180124_10942_팰린드롬? (0) | 2018.01.24 |