//MADE BY Y_is_sunshine;
//#include <bits/stdc++.h>
//#include <memory.h>
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <cstdio>
#include <vector>
#include <string>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define INF 0x3f3f3f3f
const int mod = 1e5 + 7;
const int MAXN = 3e5 + 7;
const double PI = acos(-1);
using namespace std;
int N, M, K;
vector<pair<long long, long long> > v[MAXN];
int h[MAXN];
int p[MAXN];
int dp[MAXN][3];
long long ok(long long x, long long y, long long v1, long long v2) {
if (h[x] + v1 == h[y] + v2) return 1e19 + 7;
else return 0;
}
int main(void)
{
freopen("data.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T;
cin >> T;
while (T--) {
cin >> N;
long long ans = 0;
for (int i = 1; i <= N; i++)
cin >> h[i] >> p[i];
for (int i = 1; i <= N; i++) {
dp[i][0] = min(min(dp[i - 1][0] + ok(i - 1, i, 0, 0), dp[i - 1][1] + ok(i - 1, i, 1, 0)), dp[i - 1][2] + ok(i - 1, i, 2, 0));
dp[i][1] = min(min(dp[i - 1][0] + ok(i - 1, i, 0, 1), dp[i - 1][1] + ok(i - 1, i, 1, 1)), dp[i - 1][2] + ok(i - 1, i, 2, 1)) + p[i];
dp[i][2] = min(min(dp[i - 1][0] + ok(i - 1, i, 0, 2), dp[i - 1][1] + ok(i - 1, i, 1, 2)), dp[i - 1][2] + ok(i - 1, i, 2, 2)) + p[i] * 2;
}
printf("%I64d\n", min(min(dp[N][0], dp[N][1]), dp[N][2]));
}
freopen("CON", "r", stdin);
system("pause");
return 0;
}
Educational Codeforces Round 73 (Rated for Div. 2) D
最新推荐文章于 2021-05-01 22:32:34 发布