zoukankan      html  css  js  c++  java
  • HDU 4283 You Are the One

    题目链接

    有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
    ", kase, DP(1, N, 0));
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    js代码的执行顺序及运算
    javascript讲解
    浏览器的差距
    标准流
    下拉列表
    单位
    滚动标签
    接着说一些有关排版的一些东西
    关于处理浏览器的兼容问题
    关于排版的技巧
  • 原文地址:https://www.cnblogs.com/ljzalc1022/p/9064452.html
Copyright © 2011-2022 走看看