码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 4283 You Are the One

时间:2018-05-20 21:21:29      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:set   hdu 4283   main   入栈   int   names   include   namespace   using   

题目链接

有n个人排队,对于每个人有个不同的D,如果他是第k个排到的,会有(k-1)*D的不满,你可以将当前队首放入一个栈中并在任意时刻让栈顶元素出栈问最小的不满值

状态有两种转移,让队首直接出队或让他在入栈并在第i个人后出栈

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int inf = 1000000000;
int T, N, D[105];
int f[105][105][105];
int DP(int l, int r, int k) {
    if(l == r) return k * D[l];
    int & res = f[l][r][k];
    if(res != -1) return res;
    res = inf;
    res = min(res, DP(l + 1, r, k + 1) + k * D[l]);
    for(int i = l + 1; i < r; i++) {
        int _k = k + i - l;
        res = min(res, DP(l + 1, i, k) + _k * D[l] 
                     + DP(i + 1, r, _k + 1));
    }
    res = min(res, DP(l + 1, r, k) + (k + r - l) * D[l]);
    return res;
}
int main() {
    scanf("%d", &T);
    for(int kase = 1; kase <= T; kase++) {
        scanf("%d", &N);
        for(int i = 1; i <= N; i++) scanf("%d", &D[i]);
        memset(f, -1, sizeof(f));
        printf("Case #%d: %d\n", kase, DP(1, N, 0));
    }
    return 0;
}

HDU 4283 You Are the One

标签:set   hdu 4283   main   入栈   int   names   include   namespace   using   

原文地址:https://www.cnblogs.com/ljzalc1022/p/9064452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!