没种电压灯泡要么全换,要么不换。状态d(i)表示前i种灯泡的最低价格。

转移方程:

dp[i]=min(dp[i],dp[j]+(s[i]-s[j])*d[i].c+d[i].k);

AC代码:

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000+5;
const int INF=1<<30;
struct node{
    int v,k,c,l;
    bool operator < (const node&p) const{
        return v<p.v;
    }
};
node d[maxn];
int s[maxn],dp[maxn];
int main(){
    int n;
    while(scanf("%d",&n)==1&&n){
        for(int i=1;i<=n;++i){
            scanf("%d%d%d%d",&d[i].v,&d[i].k,&d[i].c,&d[i].l);
        }
        sort(d+1,d+n+1);
        s[0]=0;
        for(int i=1;i<=n;++i){
            s[i]=d[i].l+s[i-1];
        }
        for(int i=1;i<=n;++i){
            dp[i]=INF;
            for(int j=0;j<i;++j){
                dp[i]=min(dp[i],dp[j]+(s[i]-s[j])*d[i].c+d[i].k);
            }
        }
        printf("%d\n",dp[n]);
    }
    return 0;
}

如有不当之处欢迎指出!

uva11400 动态规划的更多相关文章

  1. (动态规划)UVA-11400:Lighting System Design

    You are given the task to design a lighting system for a huge conference hall. After doing a lot of ...

  2. UVa11400 - Lighting System Design——[动态规划]

    题干略. 题意分析: 很容易理解一类灯泡要么全部换要么全不换,其实费用节省的主要原因是由于替换灯泡类型而排除了低压电压源,于是我们就可以推断出灯泡类型替换的原则: 对于两类灯泡a1和a2,a1可以被a ...

  3. 【Uva11400 Lighting System Design】动态规划

    分析 先按照电压从小到大排序,做一下前缀和s[i]求i之前的电灯泡的数量. 状态:$ F_i\(表示到\) i$个灯泡的最小开销. 状态转移方程:$ F_i=F_j+(s[i]-s[j])\times ...

  4. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  5. 简单动态规划-LeetCode198

    题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...

  6. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  7. 动态规划之最长公共子序列(LCS)

    转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...

  8. C#动态规划查找两个字符串最大子串

     //动态规划查找两个字符串最大子串         public static string lcs(string word1, string word2)         {            ...

  9. C#递归、动态规划计算斐波那契数列

    //递归         public static long recurFib(int num)         {             if (num < 2)              ...

随机推荐

  1. HotSpot 虚拟机的算法实现

  2. php的print_r第二个参数是true有啥用啊

    print_r(); 第二个参数 为true时 返回值 而不显示. echo ,print,print_r的区别 echo ,print的区别在于echo 可以输出多个变量值,而print只有一个变量 ...

  3. 解决苹果电脑(mac)管理员账户变成了普通用户后不能解锁用户与群组的问题

    亲们,我先说说前因,然后再说一下解决方法. 前因 今天不知怎么就想把苹果电脑原来的名字给改一下,于是就做了下面的操作(你们不要这样做) 1.系统偏好设置→用户与组群→当前管理员用户→(右键)高级选项 ...

  4. WEB消息推送-框架篇

    WEB消息推送-comet4j 一.comet简介: comet :基于 HTTP长连接的“服务器推”技术,是一种新的 Web 应用架构.基于这种架构开发的应用中,服务器端会主动以异步的方式向客户端程 ...

  5. ldconfig几个需要注意的地方

    1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到 2. 想往上面两个目录以外加东西的时候, ...

  6. Spark Streaming编程指南

    Overview A Quick Example Basic Concepts Linking Initializing StreamingContext Discretized Streams (D ...

  7. 如何让oracle DB、监听和oem开机启动(dbstart)

    如何让oracle DB.监听和oem开机启动(dbstart) 让oracle DB.监听和oem开机启动(dbstart) Oracle提供了伴随操作系统自动重启的功能,在Windows中,可以修 ...

  8. es数据恢复杂记

    kill -9或者断电等原因异常,es在重启后,会通过translog来进行数据恢复. 默认的恢复速度是较慢的,可以设置indices.recovery.current_streams:10增大恢复的 ...

  9. BZOJ 4537: [Hnoi2016]最小公倍数 [偏序关系 分块]

    4537: [Hnoi2016]最小公倍数 题意:一张边权无向图,多组询问u和v之间有没有一条a最大为a',b最大为b'的路径(不一定是简单路径) 首先想到暴力做法,题目要求就是判断u和v连通,并查集 ...

  10. BZOJ 2631: tree [LCT splay区间]

    2631: tree Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 3854  Solved: 1292[Submit][Status][Discus ...