21. I번 밸런스 스톤 - 출제의도
● 주어진 입력 값 범위에 맞게 long long을 사용할 수 있는
가?(int로 구할 경우 overflow)
22. I번 밸런스 스톤 - 풀이방법
● 주어진 N * N 맵에서 각 행의 합을 구한다.
● 이 중 0(비어있는 곳)이 포함된 곳의 행의 합이 다른 행의
합과 같도록 0값을 채워준다.
● 채운 후에 조건을 만족하는지 판단한다 안될 경우 -1을 출
력하고 가능한 경우 채웠던 값을 출력
28. L번 세진이의 미팅
● 문제를 해석하면 답은 nCm이 된다.
● N의 범위가 작다면 다이나믹 프로그래밍을 이용하여 계산
가능
● nCr = n!/(r!*(n-r)!) 을 이용
● 모듈러가 있기 때문에 r!의 10억+7에 대한 역원과 (n-r)!의
10억+7에 대한 역원을 구해주어야 함
29. L번 세진이의 미팅
● 페르마의 소정리를 이용하여 역원을 구해줌
● x의 p에 대한 역원은 x^(p-2)
● p가 10억+7이므로 직접 계산하면 시간초과
● 분할 정복을 이용하여 logP의 시간에 x의 P승 계산
● O(N+logP)
30. K번 최종병기 활
● 제출 수 :
● 문제 유형: 파라메트릭 서치
● 출제자 : 박정률
31. K번 최종병기 활 - 출제의도
● 주어진 문제를 결정문제로 바꾸어 해결할 수 있는가?
● 결정문제로 바꾸었을 때 Parametric Search 를 이용하여
문제를 해결할 수 있는가?
32. K번 최종병기 활- 풀이방법
● 만들고자 활의 길이를 Fix 했을 때 해당 활을 만들 수 있는
지 결정할 수 있다.
● 어떠한 임계값을 기준으로 활을 만들 수 있는 길이와 만들
수 없는 길이가 존재한다.
● Parametric Search 를 이용하여 해당 임계값을 구한다.
33. C번 Calculate! 2
● 제출 수 :
● 문제 유형: 트리, segment tree &lazy propagation
● 출제자 : 김진서
34. C번 Calculate! 2
● 한 노드의 서브트리를 구간으로 관리할 수 있는가
● 구간에서 업데이트와 xor합 쿼리를 빠르게 처리할
수 있는가?
35. C번 Calculate! 2
● 주어진 질의를 매번 직접 계산해줄경우 최대 N*M
으로 시간초과가 난다.
● dfs를 돌리는 순서로 노드의 번호를 새로 매겨주면
서 자기의 자식들 중 가장 큰 번호를 저장하면, 자
기의 번호부터 자식들 중 가장 큰 번호까지 연속
된 구간으로 자식들의 구간을 관리할 수 있다.
36. C번 Calculate! 2
● 자식들을 구간으로 관리 할 수 있으니 이제 구간
업데이트를 생각해보자.
● XOR 질의는 구간을 segment tree를 이용하여 처
리하면 logN에 처리할 수 있다.
● update 질의는 구간에 업데이트를 해야하므로
lazy propagation을 이용해줘야 한다.
● O(MlogN)