티스토리 뷰
9:57 분 - 오오 휴일 잉여한 하루
1. Candi Set을 Heap으로 관리
2. 왕복 보두 같으니 중복 적용 금지
3. duplicated line 제거
머 Dijkstra Algorith으로 안되니 위의 변형 적용하기 전에
Heap Dijkstra, Pibonacchi dijkstra를 찾아봄
알고리즘 대회 책에는 실제 구현하면 느리다고 되어있는데
피보나치에 대한 것 Heap 을 사용하는것의 장단점에 대해 기술해 놓음.
당연히 사용 안하면 이문제 폿풀게 해놨으니..
그건 저자 기준이고 얼마나 느린지는 파악해볼 필요가 있는듯.
http://stackoverflow.com/questions/504823/has-anyone-actually-implemented-a-fibonacci-heap-efficiently
boost 라이브러리를 응용한 것으로는
Generating graph...10000 vertices, 20000000 edges.
Running Dijkstra's with binary heap...1.46 seconds.
Running Dijkstra's with Fibonacci heap...1.31 seconds.
Speedup = 1.1145.
나은것 같이 보인다. 근대 edge가 좀 많네 dense의 기준도 살펴볼 필요가 있는듯
14:15 - 카페에서 계속 쳐웃는 아줌마가 있다. 망할
14:26 - 그만좀 쳐웃어라 썅년아 으아아ㅏ앙
After I compiled with very strong optimizations, binary heaps got an enormous boost. In my tests, Fibonacci heaps only outperformed binary heaps when the graph was incredibly large and dense, e.g.:
18:01 - priority quque를 이용한 버전을 통과 근대 시간이 1.2 초넹. 근대 1위 200ms도 비슷한 방식인것 같은데 문제는 멀까. 우선 scanf로 바꿔보고 개선하자 그다음에 map도 넣어보고 코드 길이도 반절로! 오랜만에 기쁘넹.
22:23 - 집에와서 밥먹고 공원 산책하는데 징집. 앉으니 10시넹
You need to pass the type of the lambda as a template argument, not the lambda itself. What you want is this:
auto mycomp = [](const int&a, const int& b) { return a < b; };
std::map<int, int, decltype(mycomp)> test(mycomp);
map으로 이용시 730ms / priority quque사용시 450ms
24:08 코드 정리후 제출 후 Repo 정리.
27:42 : codeforce 참전 - 3번 구글 검색 후 왠지 길이 보였는데 시간 부족
'알고리즘 연습' 카테고리의 다른 글
알고리즘 연습 9일차 (0) | 2014.05.04 |
---|---|
알고리즘 연습 8일차 (0) | 2014.05.03 |
알고리즘 연습 6일차 (0) | 2014.05.01 |
알고리즘 연습 5일차 (0) | 2014.05.01 |
알고리즘 연습 5일차.. (0) | 2014.04.27 |
- Total
- Today
- Yesterday