본문 바로가기

Problem Solving102

저주 인형 - COCI_2016C2_VUDU 문제 링크(koitp.org/problem/COCI_2016C2_VUDU/)Prefix sum과 index를 pair로 정한다.Prefix sum 오름차순으로 정렬하고, index에 대해 fenwick tree로 관리하면서 계산하면 된다.O(N log N) 2017. 1. 23.
오크 나무 - COI_2010_HRASTOVI 문제 링크(koitp.org/problem/COI_2010_HRASTOVI/)단순한 좌표압축 + 이분탐색. 직사각 영역의 꼭짓점을 2번 카운팅 하지 않는 것에 주의. 2017. 1. 23.
로다 - COCI_2016C2_SAVEZ 문제 링크(koitp.org/problem/COCI_2016C2_SAVEZ/)해싱을 이용한 동적계획법으로 해결할 수 있다. D(i, p, q) : i번째 문자열까지 고려했을 때, prefix 해시값이 p, suffix 해시값이 q일 때의 최대 텔레포트 횟수i번째 문자열의 prefix와 suffix들에 대해 D(i-1)의 값으로 D(i, p, q)값을 갱신하면 된다.그런데 여기서 첫번째 차원인 i는 (p, q)가 누적되는 성질에 따라 불필요하게 된다. 2017. 1. 22.
2004 정보올림피아드 자료집 - 경기도교육정보연구원 (2.2MB) 외장하드 정리하다가 찾았다. 어릴 때, 친형이 이걸로 독학했었는데... 요즘은 정리가 잘 되어있는 좋은 자료들이 워낙 많아서 이게 별로 쓸모없을 것 같다. 혹시나 누군가에겐 도움이 될까 싶어서 공유함. 저기 있는 문제들 중 공식대회 기출문제는 BOJ에서 찾아 채점해보면 된다. 2017. 1. 22.
구간 나누기 - KOITP_201601_INTERVALDIVISION 문제 링크(koitp.org/problem/KOITP_201601_INTERVALDIVISION/)동적계획법으로 해결할 수 있다.dp(k, i) : i번째 수까지 k개의 구간을 정했을 때의 최적해dp(k, i) = max[dp(k-1, j) + max(A(j+1)~A(i)) - min(A(j+1)-A(i))]여기서 max( )와 min( )을 계산하는데 O(N)이 걸려서 한 가지 변형을 한다.dp_contain_max(k, i) = max[dp(k-1, j) + max(A(j+1)~A(i))]dp_contain_min(k, i) = max[dp(k-1, j) - min(A(j+1)~A(i))]그러면 dp(k, i) = max[dp_contain_max(k, i) - A(i), dp_contain_min(.. 2017. 1. 22.