티스토리 뷰

알고리즘/BOJ

[백준] 13904 과제

세진짱 2018. 6. 27. 14:16


과제를 하루에 하나씩 할 수 있고 , 데드라인과 받을 수 있는 점수를 알려준다

이 때 점수의 최댓값을 구하는 문제!

흔히 볼 수 있는 dp문제다


우리는 과제를 하나하나 보며 선택하면 된다!


d[N(n번째 과제)][T(현재시간)]로 테이블을 잡는다

기본값은 과제를 안하고 넘어가는 값으로 잡는다

그리고 만약 현재의 과제 데드라인보다 시간이 작다면 과제를 하는것과 비교한다!


소스코드

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
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int n,d[1010][1010];
vector<pair<intint>> vt;
int go(int pos, int t) {
    if (pos == n || t > 1000return 0;
    int&ret = d[pos][t];
    if (ret != -1return ret;
    int ptime = vt[pos].first;
    int pcost = vt[pos].second;
    ret = max(ret, go(pos + 1, t));
    if (t <= ptime) ret = max(ret, go(pos + 1, t + 1+ pcost);
    return ret;
}
int main() {
    memset(d, -1sizeof(d));
    scanf(" %d"&n);
    vt.resize(n);
    for (int i = 0; i < n; i++scanf(" %d %d"&vt[i].first, &vt[i].second);
    sort(vt.begin(), vt.end());
    printf("%d\n", go(01));
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 10750 Censoring  (0) 2018.06.28
[백준] 13264 접미사 배열2  (4) 2018.06.27
[백준] 15594 Out of place  (0) 2018.06.26
[백준] 14965 Lozinke  (0) 2018.06.25
[백준] 11402 이항계수4  (2) 2018.06.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
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
글 보관함