1280번 - 나무 심기
두개의 세그먼트 트리를 사용했습니다.
첫번째 세그먼트 트리의 리프에는 각 좌표에 있는 나무들의 원점으로부터의 거리 합을..
그러니까 나무가 두 개가 4 좌표에 있으면 첫 번째 세그먼트 tree의 리프에는 -> leaf[4] = 4*2
이렇게 되어있고 다른 세그먼트 cnt의 leaf에는 갯수로 -> leaf[4] = 2
이런 식으로 만들어놓고,
각 좌표가 들어올때마다 두 세그먼트 트리에 각각 값을 업데이트 한뒤,
좌표 좌우에서 가격에 해당하는 값을 계산합니다.
구체적으로 첫 번째 세그먼트 트리를 통해 새로 심은 나무 전후에 있는 나무들의 거리 합을 구하고
두 번째 세그먼트 트리를 통해 새로 심은 나무 전후에 있는 나무 갯수를 따로따로구해서 계산해주는 방식인데...
시간초과가 납니다. ㅠㅠ왜날까요 ㅠㅠㅠㅠㅠㅠ
이 코드에서 40번째 줄만 지우고 내봤는데 5912ms로 통과합니다.
댓글을 작성하려면 로그인해야 합니다.
jhjh9501 4년 전
두개의 세그먼트 트리를 사용했습니다.
첫번째 세그먼트 트리의 리프에는 각 좌표에 있는 나무들의 원점으로부터의 거리 합을..
그러니까 나무가 두 개가 4 좌표에 있으면 첫 번째 세그먼트 tree의 리프에는 -> leaf[4] = 4*2
이렇게 되어있고 다른 세그먼트 cnt의 leaf에는 갯수로 -> leaf[4] = 2
이런 식으로 만들어놓고,
각 좌표가 들어올때마다 두 세그먼트 트리에 각각 값을 업데이트 한뒤,
좌표 좌우에서 가격에 해당하는 값을 계산합니다.
구체적으로 첫 번째 세그먼트 트리를 통해 새로 심은 나무 전후에 있는 나무들의 거리 합을 구하고
두 번째 세그먼트 트리를 통해 새로 심은 나무 전후에 있는 나무 갯수를 따로따로구해서 계산해주는 방식인데...
시간초과가 납니다. ㅠㅠ왜날까요 ㅠㅠㅠㅠㅠㅠ