본문 바로가기

구간합3

[백준 11659/c++] 구간 합 구하기 4 벡터에 accumulate 를 사용하여 푸니 시간초과가 떴다 그렇다면 속도 향상을 위해서 벡터보다 빠르다는 정적 배열을 사용하고 두 개의 구간을 계산하는 accumulate 대신에 누적 합의 차를 통해 얻은 구간합을 이용하여 구간 계산을 두 번에서 한 번으로 연산과정을 줄여 처리 속도를 높여 해결하였다 주석처리한 부분은 시간초과가 났던 벡터 풀이다 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net #include using.. 2022. 7. 22.
백준 2559 수열 문제 개선답 계산방법을 구간합으로 바꾸니 연산이 줄어 시간내에 해결 가능하였다 max 를 사용해서 비교 갱신하여 ret 의 최대값을 구하였으므로, 최소값을 구하였고 여유값을 더 준점이 포인트다 #include using namespace std; int a; int n; int temp; int psum[100004];// 여유공간 4 int ret = -10000004; // max비교를 위한 최소값, 온도가 -100이고 10만번 더하니 -1000만이 최소값이다 여유를 위해 공간을 더 주자 int main(){ cin >> a >> n; for(int i=1; i> temp; psum[i]=psum[i-1]+temp; } for(int i=n; i 2022. 6. 14.
백준 2559 수열 문제 오답 분석 입력 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사이의 정수이다. 둘째 줄에는 매일 측정한 온도를 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -100 이상 100 이하이다. 출력 첫째 줄에는 입력되는 온도의 수열에서 연속적인 K일의 온도의 합이 최대가 되는 값을 출력한다. 제출결과 시간 초과. 실패 1차 수정 : sort 를 max_element 함수를 사용해서 시간을 개선해보려 함. 실패 2차 수정 : ios_base::sync_with_stdio(false)를 넣.. 2022. 6. 14.