페이지

14445번: 케이크(?) 자르기

https://www.acmicpc.net/problem/14445


$O(1)$

1.
케이크를 잘랐을 때 옆 부분에 생크림이 묻어있지 않은 조각이 있을 경우,
케이크의 높이에 따라 생크림이 같은 양만큼 묻어있지 않게 만들 수 있다.
따라서 케이크는 윗면의 한 점을 지나도록 잘라야 한다.
2.
케이크의 중심을 지나도록 잘라보면 조각에 해당하는 정사각형 변의 길이는 묻은 생크림의 양과 조각의 부피에 비례한다.

이에 따라
i) n=1
케이크를 자르지 않아도 된다.
ii) n=2k (k = 1, 2, 3, ...)
k번 잘라서 조각마다 해당하는 정사각형 변의 길이가 같도록 자른다.
iii) n=2k+1 (k = 1, 2, 3, ...)
k+1번 잘라서 조각마다 해당하는 정사각형 변의 길이가 1, 1, 2, 2, 2, 2, ...(나머지 모두 2) 만큼 되도록 자른 다음, 1인 두 조각은 합쳐서 주고 나머지 조각은 그대로 준다.

#include<cstdio>
long long n;
int main() {
    scanf("%lld", &n);
    printf("%lld", n > 1 ? n + 1 >> 1 : 0);
    return 0;
}

댓글 없음 :

댓글 쓰기