본문 바로가기

코딩캠프26

[5719] 거의 최단경로 // 5719 거의 최단경로 // 다익스트라 // 경로 역추적 | 다익스트라 -> 간선 지우기 -> 다익스트라 #include #include #include #include #include #include #define MAX_N500 // 도시 수 #define MAX_M10000 // 도로 수 #define MAX_VALUE 500500 // using namespace std; struct Node{ int dest; int cost; Node(int dest, int cost) : dest(dest), cost(cost){ } // min-heap bool operator a.cost; } }; int N, M, S, D; vector adjList[MAX_N+5]; vector delList[.. 2024. 2. 23.
[2098] 외판원 순회 #include #include #include using namespace std; int N, start, W[16][16], dp[16][65536];//1 2024. 2. 23.
[5582] 공통 부분 문자열 // 5582 공통 부분 문자열 // dp #include #include #include #define MAX 4001 // 최대 4000글자 using namespace std; int dp[MAX][MAX]; // int max_len = 0; string a, b; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // 배열 초기화 memset(dp, 0, sizeof(dp)); cin >> a; cin >> b; // dp for(int i=1; i 2024. 2. 23.
[9252] LCS2 // 9252 LCS2 // dp #include #include #include #include #define MAX 1001 // 최대 1000글자 using namespace std; stack stk; int dp[MAX][MAX]; string a, b; string ans = ""; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // 배열 초기화 memset(dp, 0, sizeof(dp)); cin >> a; cin >> b; // dp for(int i=1; i 2024. 2. 23.
[11660] 구간 합 구하기 5 // 11660 구간 합 구하기 5 // 펜윅과 다른 점 -> 업데이트가 없다 #include #include #include #define MAX 1025 using namespace std; int arr[MAX][MAX]; int dp[MAX][MAX]; int N, M, x1, y1, x2, y2; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(arr, 0, sizeof(arr)); memset(dp, 0, sizeof(dp)); scanf("%d %d", &N, &M); for(int i=1; i 2024. 2. 22.
[14002] 가장 긴 증가하는 부분수열4 // 14002 가장 긴 증가하는 부분 수열4 #include #include #include #include #define MAX 1000 using namespace std; int arr[MAX]; // 숫자 int L[MAX], P[MAX]; int len, N; void backtrace(int idx, int num){ if(idx==0) return ; if(P[idx] == num){ backtrace(idx-1, num-1); printf("%d ", arr[idx]); }else{ backtrace(idx-1, num); } } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // 초기화 memset(arr, 0, MAX).. 2024. 2. 22.