어렵지 않은 DP 문제
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <math.h>
#include <queue>
#include <set>
#include <list>
#include <utility>
#include <functional>
#define MAX 1005
#define INF 987654321
#define MOD 1000000
#pragma warning(disable:4996)
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
int a, b;
int m[MAX], w[MAX], dp[MAX][MAX];
int main()
{
scanf("%d %d", &a, &b);
for (int i = 1; i <= a; i++)
scanf("%d", &m[i]);
for (int i = 1; i <= b; i++)
scanf("%d", &w[i]);
sort(m + 1, m + 1 + a), sort(w + 1, w + 1 + b);
if (a > b)
swap(a, b), swap(m, w);
for (int i = 1; i <= a; i++)
for (int k = i; k <= b; k++)
{
int tmp = abs(m[i] - w[k]);
//printf("<%d>", tmp);
if (k == i)
dp[i][k] = tmp + dp[i - 1][k - 1];
else
dp[i][k] = min(dp[i][k - 1], (dp[i - 1][k - 1] + tmp));
}
printf("%d", dp[a][b]);
return 0;
}'IT > BOJ' 카테고리의 다른 글
| 백준(BOJ) 2294 동전 2 ** (0) | 2018.06.01 |
|---|---|
| 백준(BOJ) 2159 케익 배달 ** (0) | 2018.06.01 |
| 백준(BOJ) 2342 DDR ** (0) | 2018.06.01 |
| 백준(BOJ) 11062 카드게임 *** (0) | 2018.06.01 |
| 백준(BOJ) 2932 표회전 * (0) | 2018.06.01 |