hello70825   4년 전

C++로 세그먼트 트리를 짜서 만들었는데 게시판에 있는 반례도 맞고, 제가 만든 반례도 정답대로 나오는데 어디가 틀린지 잘 모르겠습니다.

오버플로우 나올까봐 나오는 값들 족족 %MOD를 해놔서 오버플로우가 나올 것 같진 않은데 제가 놓친 것이 있을까요?

Seg_cnt는 어떤 좌표에 나무를 심은 개수, Seg_sum은 0으로부터 어떤 좌표까지의 거리입니다.(같은 좌표에 나무가 2개 있으면 그 좌표만큼 더해줍니다.)

crypt9   4년 전

update 와 Find  함수에서  %MOD 를 삭제하면 잘되네요.

거리들의 합이 정확하게 계산되어야 하는데, 상위 노드로 올라가면서 %MOD 를 취해서 값이 작아 질 수 있습니다.

값이 왜곡되어 거리 합이 정확하지 않게 될 것 같네요.

 

tjswns1542   4년 전

crypt9님 덕분에 며칠동안 풀지 못했던 문제를 해결했습니다..

200000*200000 수준은 ll범위에서 커버가 되니까

부분합 만드는 부분들에서는 굳이 mod를 할 필요가 없었고

했어도 데이터가 이상해지는군요.. 어찌됐든 최후 연산에서 mod를 하기때문에

아무 상관없다고 생각했는데

그부분에 대해서는 좀더 생각해보고 아무튼 댓글 너무 감사드립니다!

댓글을 작성하려면 로그인해야 합니다.