Loading...

C++ 알고리즘 기초15 -배열을 만드는 방법1-

1. 배열 10개의 숫자가 공백으로 주어질때, 이들을 모두 기억하고 있어야한다면, 10개의 변수를 선언하고 cin으로 변수에 입력할 수 있지만, int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; cin >> a1; cin >> a2; ... cin >> a10; 100개, 1000개라면, 이들을 모두 선언하기에는 당연히 무리다. 배열은 여러 원소를 들고 있는 묶음으로 배열을 이용한다면 단 하나의 변수만으로 100개,1000개의 변수를 모두 관리할 수 있다. 선언하는 방법은 자바와 동일하다 int arr[3]; 이는 arr이라는 이름의 배열이며, int 자료형인 원소를 3개 가지고 있는 배열을 생성하겠다는 의미이다. 배열 안에 있는 각 원소를 참조하기 위해 "원소의 번째 수 ..

2022. 12. 13. 02:35

느리게 갱신되는 세그먼트 트리 응용 -리프노드의 값을 출력하는 트리?-

1. 문제 16975번: 수열과 쿼리 21 (acmicpc.net) 16975번: 수열과 쿼리 21 길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. 1 i j k: Ai, Ai+1, ..., Aj에 k를 더한다. 2 x: Ax 를 출력한다. www.acmicpc.net 주어진 구간에 특정 값을 더해주고, 배열 A의 x번째 수를 출력하는 문제 2. 풀이 lazy propagation을 쓰지 않고 팬윅 트리를 이용하는 방법도 있다는데.. 아직 팬윅 트리는 공부하지 않았으니까 넘어가고 정직하게 lazy propagation으로 풀어보자 먼저 목표는 A 배열의 값을 바꾸고, 구간의 합이나 곱이나 이런게 아니라 결국에 A[x]를 출력하는 것이다. 그러..