알바가기전에 BOJ에 머그컵이라는 대회가 열려있길래 참가했다.
총 8문제중 5문제를 풀었는데 나머지 3문제는 내 수준에서는 해결할 수 없는 문제였다.
<C 자원 캐기>
출발 지점에서 끝 지점 까지 최대로 수집 가능한 자원을 찾는 전형적인 다이나믹 프로그래밍 문제였다.
점화식은 dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j] 다.
<B 배스킨라빈스31>
항상 주어지는 조건대로 게임을 할 때 가장 빨리 끝나는 게임과 번호를 출력하는 문제이다.
수식에 따라서 계산을 해주면 게임의 횟수는 ((k/(m+1))+1)*2 가 될 것이고 set을 이용하여 관리를 해주면 편하게 해결 가능했다.
<D 소수마을>
마을의 위치가 좌표로 주어질 때 각 마을 사이의 거리의 정수부분이 소수일 경우 이동가능하다고 할 때 A부터 B까지의 최단거리를 출력하면 되는 문제였다.
에라토스테네스의 체를 이용하여 소수들을 구해준 후 모든 좌표들의 거리를 비교하여 소수일 경우 간선을 연결해준다. 이후 다익스트라를 통하여 최단거리를 구해주었다.
<F 한조 대기 중>
두 이분 그래프에 대해서 최대매칭을 비교해주면 되는 문제였다.
N이 300밖에 안되었기 때문에 이분매칭을 두번 돌려준 후 최대매칭을 서로 비교해주어서 답을 출력했다.
<A 준오는 심술쟁이!!>
경우의 수를 구하는 문제였기 때문에 다이나믹프로그래밍으로 접근했으나 O(3000*3000*25)라는 애매한 시간때문에 TLE를 받았다.
재귀함수에 모듈러 연산까지 호출하기에는 큰 연산횟수였던거 같다.
포문으로 수정한 뒤 dp[i][0]~dp[i][j] 를 파셜섬으로 저장하여 25의 연산을 줄여준 뒤 O(3000*3000)의 시간에 해결하였다.
무려 12번이나 제출한 문제이다 ..
코드포스도 잘 안하는데 이런 대회에 참가할 기회가 있어서 재밌었다.
'일상 > 잡담' 카테고리의 다른 글
뒤늦은 제 3회 SCPC 후기 (5) | 2017.08.20 |
---|---|
제 3회 SCPC 본선진출 (2) | 2017.07.21 |
1500? (3) | 2017.06.12 |
뒤늦은 제 3회 IUPC(인하대학교 프로그래밍 경진대회) 후기 및 간략한 풀이 (2) | 2017.06.08 |
한문제를 풀면 4문제를 해결 가능 (0) | 2017.01.14 |