File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed
Dynamic_Programming/2463.Minimum-Total-Distance-Traveled Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ using LL = long long ;
2+ class Solution {
3+ LL dp[101 ][101 ];
4+ LL dist[101 ][101 ][101 ];
5+ public:
6+ long long minimumTotalDistance (vector<int >& robot, vector<vector<int >>& factory)
7+ {
8+ int m = robot.size ();
9+ int n = factory.size ();
10+
11+ sort (robot.begin (), robot.end ());
12+ sort (factory.begin (), factory.end ());
13+
14+ for (int i=0 ; i<n; i++)
15+ for (int j=0 ; j<m; j++)
16+ {
17+ LL sum = 0 ;
18+ for (int k=j; k<m; k++)
19+ {
20+ sum += abs (factory[i][0 ]-robot[k]);
21+ dist[i][j][k] = sum;
22+ }
23+ }
24+
25+ dp[0 ][0 ] = 0 ;
26+ for (int j=1 ; j<=m; j++)
27+ {
28+ if (j<=factory[0 ][1 ])
29+ dp[0 ][j] = dist[0 ][0 ][j-1 ];
30+ else
31+ dp[0 ][j] = LLONG_MAX/2 ;
32+ }
33+
34+ for (int i=1 ; i<n; i++)
35+ for (int j=1 ; j<=m; j++)
36+ {
37+ dp[i][j] = dp[i-1 ][j];
38+ for (int k=1 ; k<=min (j,factory[i][1 ]); k++)
39+ dp[i][j] = min (dp[i][j], dp[i-1 ][j-k] + dist[i][j-k][j-1 ]);
40+ }
41+
42+ return dp[n-1 ][m];
43+ }
44+ };
You can’t perform that action at this time.
0 commit comments