Skip to content

Conversation

@ShinHeeEul
Copy link
Contributor

@ShinHeeEul ShinHeeEul commented Feb 11, 2025

🧷 문제 링크

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

🧭 풀이 시간

60 분

👀 체감 난이도

✏️ 문제 설명

크기가 N인 수열 A0, A1, ..., AN-1이 주어졌을 때, 다음 두 종류의 쿼리를 수행해보자.

1 i j k: Ai, Ai+1, ..., Aj에 k를 xor한다.
2 i j: Ai, Ai+1, ..., Aj를 모두 xor한 다음 출력한다.

🔍 풀이 방법

느리게 갱신되는 세그먼트 트리에 XOR로 더해가는 방식이다. XOR 특성 상 짝수 번 XOR 되면 안 한 것과 같다. 그러므로 updateLazy 함수에서 현재 범위를 업데이트해야 한다 하면, 범위가 홀수인지 체크하고, 홀수라면 업데이트한다. 그리고 홀수 여부를 부모 updateLazy 함수에게 반환해준다.

반환 받은 부모 updateLazy 함수에서 자식들의 반환값을 XOR하고(만약 둘 다 True를 반환한다면 현재 위치에서는 짝수번 업데이트 된다는 것으로 업데이트 할 필요가 없다!) True인 경우 다시 현재 노드에 업데이트, 아니라면 False를 그 부모에게 전달한다.

⏳ 회고

좀 성장한듯 ㅎ

@ShinHeeEul ShinHeeEul added the success 👍 해설을 보지 않고 풀었을 때 label Feb 11, 2025
@ShinHeeEul ShinHeeEul self-assigned this Feb 11, 2025
@ShinHeeEul ShinHeeEul merged commit 5f0b9da into main Feb 11, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants