2014年2月1日

UVa 10337 - Flight Planner

#include <cstdio>
#include <algorithm>

using namespace std;

int dp[1001][10], w[1000][10];

int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    int X;
    scanf("%d", &X);
    int n = X / 100;
    for (int h = 9; h >= 0; h--) {
      for (int i = 0; i < n; i++) {
        scanf("%d", &w[i][h]);
      }
    }
    for (int i = 0; i <= n; i++) {
      for (int h = 0; h <= 9; h++) {
        if (!i) {
          if (h) {
            dp[i][h] = 1e8;
          }
          continue;
        }
        dp[i][h] = dp[i - 1][h] + 30 - w[i - 1][h];
        if (h != 9) {
          dp[i][h] = min(dp[i][h], dp[i - 1][h + 1] + 20 - w[i - 1][h + 1]);
        }
        if (h != 0) {
          dp[i][h] = min(dp[i][h], dp[i - 1][h - 1] + 60 - w[i - 1][h - 1]);
        }
      }
    }
    printf("%d\n\n", dp[n][0]);
  }
  return 0;
}

沒有留言:

張貼留言