7개의 댓글이 있습니다.
-
-
wookayin -
저도 대회때 O(n^4) 알고리즘밖에 안 떠올라서 고민하다가 혹시나 하고 O(n^4)를 짜봤는데, 로컬에서 1.0초 미만으로 나오길래 놀라면서 DP로 맞았던 기억이 있습니다.
W, L, H에 대해 가능한 6가지 순열에 대해 f(W, L, H) 값은 같기 때문에, W<=L<=H가 되도록 n^3/6의 loop를 돌리고, 짤라보는 루프 k는 H까지만 돌려서 각각 k,W-k / k, L-k / H, L-k 를 시도해보면 됩니다. 계산이 다 되면 6군데에 값을 넣어주고요.
좀 더 최적화해서 k가 H/2 까지만 돌려도 되는데 저희는 k를 그냥 H까지만 돌리고도 로컬에서 돌려보니 빠르게 나온 듯 합니다.
14년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
김우현
개인적으로 이 문제가 재미있어서 생각을 해보았는데요.
좋은 솔루션에 대해 알고 싶어 토의 글로 올립니다.
지금까지는 문제를 3차원 DP로 접근했습니다.
D[W][L][H] = 정육면체 크기가 W,L,H일 때 최소 절단 횟수
이를 구하기 위해서 각각의 변에 대해서 하나씩 잘라보는 접근으로
시간복잡도가 O( W*L*H*(W+L+H) ) 되는 접근 방식을 생각했습니다.
하지만 여기서 저의 한계라 ㅠ; 알고스팟님들의 아이디어를 듣고 싶습니다!
소소한 최적화를 생각한 것으로
이 있습니다.
14년 전