BOJ

C | C++ 알고리즘 & 자료구조

boj 13308 주유소 C++ 풀이

이 문제는 DP+dijkstra 알고리즘으로 풀이가 가능하다.사실 말만 이렇지 정확히 이들의 교집합은 아니라서 "그래프탐색" 문제라고 하는게 정확하다.  이 문제를 처음 봤을 때 당황하는 이유는, 플레 이전에는 항상 변수가 1개인 다익스트라 혹은 다변수 DP 정도를 다뤄봤을 것이기 때문이다. 이 문제는 다익스트라의 관점에서라기 보다 DP의 관점에서 깊게 파고들면 충분히 해결 가능한 문제이다.   우리가 최종적으로 구하고자 하는건 "N번째 노드까지 도달하는 데 드는 최소비용" 이다. 고로, 평소 같았으면은 최소비용을 값으로 가지는 DP 테이블을 생각했을 것이다. 하지만 여기서 막막한게, DP[i] = i번째 노드까지의 최소비용 이라고 한다면 언제 어디서 주유를 해야하는지가 너무 큰 변수가 되어 아마 이대로..

C | C++ 알고리즘 & 자료구조

814-2 도전 - 1

namespace Simulated_Annealing{ // int GEN_CYCLE = 1000; // for genetic algorithm int max_score; double t = 1; double d = 0.9995; double k = 2.5; double lim = 0.05; vector2 max_board(8,vector1(14,0)); vector2 now_board(8,vector1(14,0)); void Start(){ int nwscore=scoring(now_board),prevscore,cnt=0; vector2 prev_board; while(t>lim){ prevscore=nwscore; //Todo : change state 1 to 2 /*****************..

C | C++ 알고리즘 & 자료구조

[DigitDP] BOJ 10802 / codeup 4837 < 369 게임 > - 디디디대왕

문 제 설 명 위 문제는 사실 간단하다. O(n)의 반복문으로 A부터 B까지 3으로 나눠지거나 3,6,9 중 하나의 숫자 이상이 들어가 있는지 판별하면 풀 수 있다. int a,b,sum=0; std::cin>>a>>b; for(int i=a;i 30 ~ 39 . . . (참고로 10~19 -> 20~29에서 3의 배수는 한 칸 땅겨지고 3을 포함하는 경우는 3 , 6 , 9 그대로이므로 동일하다.) 고로 (10 ~ 19 + 00 ~ 09 + 30 ~ 39) * 3 + 10 ~ 19 로 나타낼 수 있다. memo[ i ][ 1 ] = ( memo[ i-1 ][ 1 ] + memo[ i-1 ][ 0 ] + memo[ i-1 ][ 3 ] ) * 3 + memo[ i-1 ][ 1 ]; 이렇게 일반화할 수 있다..

ddddewang
'BOJ' 태그의 글 목록