반응형
https://www.acmicpc.net/problem/10025
10025번: 게으른 백곰
문제 더운 여름날 동물원의 백곰 앨버트는 너무 더워서 꼼짝도 하기 싫다. 다행히도 사육사들이 앨버트의 더위를 식히기 위해 얼음이 담긴 양동이들을 가져다 주었다. 앨버트가 가장 적은 거리만 움직이고도 최대한 많은 얼음으로 더위를 식힐 수 있도록 도와주자. 우리 안은 1차원 배열로 생각하며, 총 N(1<=N<=100000)개의 얼음 양동이들이 x_i(0<=x_i<=1,000,000)좌표마다 놓여 있고 각 양동이 안에는 g_i(1 <= g_i <= 10,000
www.acmicpc.net
간단한 부분합 dp였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std;
ll ice[1000002];
ll d[1000002];
int main() {
//양동이 개수, 영옆k, 얼음개수,양동이 좌표
ll n, k, g, x;
ll ans = 0;
cin >> n >> k;
for (int i = 0; i < n; i++)
{
cin >> g >> x;
ice[x] = g;
}
d[0] = ice[0];
for (int i = 1; i <= 1000000; i++)
{
d[i] = d[i - 1] + ice[i];
}
if (k <= 1000000)
{
for (int i = 0; i <= 1000000; i++)
{
//현재위치 - k이전애들을 빼줘야함
if (i + k <= 1000000 && i-k >=1)
ans = max(ans, d[i + k] - d[i - k - 1]);
}
cout << ans << '\n';
}
else
cout << d[1000000] << '\n';
}
|
cs |
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 백준(BOJ) 13302번 : 리조트 (0) | 2020.02.25 |
---|---|
(C++) - 백준(BOJ) 10835번 : 카드게임 (0) | 2020.02.25 |
(C++) - 백준(BOJ) 11660번 : 구간 합 구하기 5 (0) | 2017.03.24 |
(C++) - 백준(BOJ)코딩 1149번 : RGB거리 (0) | 2017.02.13 |
(C++) - 백준(BOJ) 11051번 : 이항 계수2 (0) | 2017.02.05 |