比赛 20251022赛前模拟1 评测结果 AAAAAAAAAAAAEEEEEEEE
题目名称 电梯 最终得分 60
用户昵称 淮淮清子 运行时间 2.611 s
代码语言 C++ 内存使用 37.99 MiB
提交时间 2025-10-22 10:29:12
显示代码纯文本
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 5005;
long long T[MAXN], A[MAXN];
long long maxx[MAXN][MAXN];
long long dp[MAXN];
int n;

int main(){
    freopen("a.in", "r", stdin);
    freopen("a.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for(int i = 1;i <= n;i ++){
        cin >> T[i] >> A[i];
    }
    for(int i = 1;i <= n;i ++){
        maxx[i][i] = A[i];
        for(int j = i - 1;j >= 1;j --){
            maxx[j][i] = max(maxx[j + 1][i], A[j]);
        }
    }
    dp[0] = 0;
    for(int i = 1;i <= n;i ++) dp[i] = 1e18;
    for(int i = 1;i <= n;i ++){
        for(int j = 0;j < i;j ++){
            if(dp[j] == 1e18) continue;
            if(max(T[i], dp[j]) + 2 * maxx[j + 1][i] < dp[i]){
                dp[i] = max(T[i], dp[j]) + 2 * maxx[j + 1][i];
            }
        }
    }
	cout << dp[n] << '\n';
    return 0;
}