Nontrivial 하고 좀 실수하기 쉬운 250 과 DP 500, 네트워크 플로우 1000 으로 구성된 셋. 250 은 좀 스포일링당해서 망설이다가 짜서 맞았고, DP 는 변수를 좀 inconsistent 하게 짰다가 디버그 고생했다. --; 1000 은 열심히 고민하다가 이렇게 하면 대충 되겠구나 적당히 증명하고 짜서 맞음.
패스패스패스, 1280.53 으로 당시 4등 점수. 당시 후연이가 10등.
more..
250 - AvoidingProduct. /again 당시의 챌린지 포인트는 n 을 넘어가는 수가 답에 들어갈 수 있다는 것. prod > n break 최적화 걸어서 가뿐히 시간 안에 나옴.
500 - BinarySum ; 3개의 n비트 정수 a, b, c 가 주어질 때, 이들의 비트 순서를 적절히 바꿔서 a + b = c 를 홀드하는 최소의 c 찾기. DP 자체는 트리비얼했는데, a 와 b 에 각각 남아 있는 1의 개수를 쓰는 변수를 해당 비트에 1 이 있는가로 헷갈려서 조건 문 잘못 썼다가 고생..
1000 - DanceParty. k명의 안 좋아하는 사람이랑도 춤 출수 있다는 조건을 빼도 살짝 어렵다. 방법은, 싱크 -> 슈퍼싱크의 캐퍼시티를 1로 놨다가 라운드마다 1씩 늘려가면서 이분매칭 하는 것. 이렇게 하면 전 라운드에서 춤췄던거 바꿔서 오버라이딩하면서도, 한 라운드에 두 사람이랑 한꺼번에 춤추는 걸 막을 수 있음. 증명을 포멀하게 하지 않았는데, 망설이다가 그냥 갔다. k 에 대한 것은 별개의 노드를 추가해서 쉽게 해결.
Java 로 다시 연습했다. 1380점. 3등 점수.. 별로 달라진게 없군 ㅋㅋ
more..
250 - AvoidingProduct
500 - BinarySum ; memoization pattern 을 어떻게 하면 빠르게 짤 수 있을까?
1000 - DancingParty; NetworkFlow 클래스 자바로 재구현 ㅋㅋ
Posted by JMnine