원래 23~31일 해서 정리해서 올릴려고 했는데 25일부터 적는 걸 깜빡했다.
기억 안나서 이거라도 올린다
1 / 23
solved.ac에서 /olympiad *p -solved_by:$me 로 랜덤 돌림
USACO US Open 2015 Contest Gold : 팰린드롬 경로 3
가장 먼저 떠오르는 풀이는
그런데 시간은 사실 가능하다.
이제 메모리를
정해는
여담으로 백준에 팰린드롬 경로 2가 없는 것 같다.
IOI 2010 Day 1 : Quality of Living
별 생각이 다 드는 문제인데 심플하게 prefix sum + 파라메트릭 서치를 적용하면 풀 수 있다.
답에 대한 결정 문제를 해결하자.
1 / 24
PST 복습 겸 XOR Maximization(Trie)도 같이 복습함. 그리고 https://kenkoooo.com/...userPageTab=Recommendation 몇개
Binary Trie로 풀 수 있는 꽤 유명한 문제 중 하나이다. 간단하게만 설명하면 트라이에 이진수 형태로 상위 비트부터 싹 다 집어넣고 x랑 xor해서 최대가 되는 y를 찾을 때, 현재 보고 있는 비트의 최대한 반대쪽으로 내려가는 그리디를 통해 찾는다.
근데 이걸 Segment Tree를 이용해서도 구현할 수 있다.
구현할 때는 구간 크기를
바로 위에서 설명한 세그먼트 트리에서의 XOR Maximization을 PST에 때려박으면 풀린다.
쿼리별 풀이 한 줄 요약
1번 : PST에서 1개 update
2번 : 위에서 설명한 xor 최대 세그먼트 트리
3번 : 수가 추가되는게 O(Q)번이라서 일일히 제거해줘도 상관없고, 퍼시스턴트 세그니까 O(1)에 루트 옮겨줘도 된다.
4번 : [1,x] 합
5번 : 이분탐색 세그먼트 트리
먼저 bfs로 주어진 k개의 수들 간 거리를 구해서 완전그래프를 만든다. 그럼 답은 이렇게 만들어진 완전그래프에서 TSP 비슷하게 bit dp를 통해 구해줄 수 있다.
ABC321 F : #(subset sum = K) with Add and Erase
추가 때 뒤에서부터 해야되는 이유는, 앞에서부터 덮어씌우면 하나의
마찬가지로 삭제될 때 앞에서부터 해야하는 이유는 뒤에서부터 하면 쓰지도 않은
코드는 짧은데 은근 생각이 까다로운 문제 중 하나.
이 문제는 이전에 한번 업솔빙 했는데도 recommendation에 나온다. 근데 못 풀뻔 했다