https://www.acmicpc.net/problem/11659
1. dp를 사용해야할때 아는방법
완탐 : O(NM) -> 100억 ->불가능
해결 : dp, greedy를 생각하면 된다!
2. 전체코드
누적합이용하면 된다.
#include <bits/stdc++.h>
using namespace std;
/*
* DP
* 1. 테이블정의
* 2. 점화식 for문
*/
/*
* 1. 테이블정의
* d[i] : d[1]~d[i]번째까지의 누적합
*
2.점화식
d[k] = d[k-1]+num
3.초기값 정하기
*/
int d[100004];
int n,m;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n>>m;
int num;
for (int i = 1; i <= n; ++i) {
cin >> num;
d[i] = d[i - 1] + num;
}
while (m--) {
int a, b;
cin >> a >> b;
cout << d[b] - d[a-1] << "\n";
}
return 0;
}
'Algorithm > dp' 카테고리의 다른 글
프로그래머스 43105 정수삼각형 c++ // dp , 인덱스에 주의하자, 일반식을 정확하게 짜는방법 (0) | 2023.10.10 |
---|---|
백준 12852 1로만들기 2 c++ // dp, 경로복원 하는 방법 pre[i] (0) | 2023.10.09 |
백준 11726 2*n타일링 c++ // dp, 점화식세우기 (0) | 2023.10.09 |
백준 1149 RGB거리 c++ // dp, 테이블정의(2차원) (0) | 2023.10.09 |
백준 2579 계단오르기 c++ // dp , 제약조건이 있으면 2차원 dp로 테이블을 정의하라. (0) | 2023.10.09 |