题意:

一共有n种灯泡,不同种类的灯泡必须用不同种电源,但同一种灯泡可以用同一种电源。每种灯泡有四个参数:

电压值V、电源费用K、每个灯泡的费用C、所需该种灯泡的数量L

为了省钱,可以用电压高的灯泡来代替电压低的灯泡。输出最小费用。

分析:

每种电源的灯泡要么不换要么全换,因为只换部分的话,两种类型的电源都要买,不划算。

将电压从小到大排序,s[i]表示前i种灯泡一共需要多少个灯泡,d[i]表示前i种灯泡最少费用。

d[i] = min{d[j] + (s[i] - s[j]) * c[i] + k[i]} (j = 0,,,i-1) (表示前j种灯泡用最优解,第j+1~i 种都被第 i 种灯泡所替换而且用第i种电源)

 //#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ;
struct Lamp
{
int v, k, c, l;
bool operator< (const Lamp& a) const
{
return v < a.v;
}
}lamps[maxn];
int s[maxn], d[maxn]; int main(void)
{
#ifdef LOCAL
freopen("11400in.txt", "r", stdin);
#endif int n;
while(scanf("%d", &n) == && n)
{
for(int i = ; i <= n; ++i)
scanf("%d%d%d%d", &lamps[i].v, &lamps[i].k, &lamps[i].c, &lamps[i].l);
sort(lamps + , lamps + + n);
s[] = ;
for(int i = ; i <= n; ++i) s[i] = s[i-] + lamps[i].l; d[] = ;
for(int i = ; i <= n; ++i)
{
d[i] = d[i-] + lamps[i].c * lamps[i].l + lamps[i].k; //用第i种灯泡和电源
for(int j = ; j < i; ++j)
{//前j种灯泡用最优解,第j+1~i 种都被第 i 种灯泡所替换而且用第i种电源
d[i] = min(d[i], d[j] + (s[i] - s[j]) * lamps[i].c + lamps[i].k);
}
}
printf("%d\n", d[n]);
} return ;
}

代码君

UVa 11400 Lighting System Design的更多相关文章

  1. 【线性结构上的动态规划】UVa 11400 - Lighting System Design

    Problem F Lighting System Design Input: Standard Input Output: Standard Output You are given the tas ...

  2. UVa 11400 Lighting System Design(DP 照明设计)

    意甲冠军  地方照明系统设计  总共需要n不同类型的灯泡  然后进入 每个灯电压v  相应电压电源的价格k  每一个灯泡的价格c   须要这样的灯泡的数量l   电压低的灯泡能够用电压高的灯泡替换   ...

  3. UVa 11400 - Lighting System Design(线性DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. UVa 11400 Lighting System Design【DP】

    题意:给出n种灯泡,分别给出它们的电压v,电源费用k,每个灯泡的费用c,和所需灯泡的数量l,问最优方案的费用 看的紫书= = 首先是dp[i]为灯泡1到i的最小费用, dp[i]=min(dp[i], ...

  5. UVA - 11400 Lighting System Design (区间DP)

    这个问题有两个点需要注意: 1. 对于一种灯泡,要么全换,要么全不换. 证明: 设一种灯泡单价为p1,电池价格为k1,共需要L个,若把L1个灯泡换成单价为p2,电池为k2的灯泡,产生的总花费为p1*L ...

  6. uva 11400 - Lighting System Design(动态规划 最长上升子序列问题变型)

    本题难处好像是在于 能够把一些灯泡换成电压更高的灯泡以节省电源的钱 .所以也才有了对最优方案的探求 好的处理方法是依照电压从小到大排序.仅仅能让前面的换成后面的.也就满足了把一些灯泡换成电压更高的灯泡 ...

  7. UVA 11400 Lighting System Design 照明系统设计

    首先是一个贪心,一种灯泡要么全都换,要么全都不换. 先排序,定义状态d[i]为前面i种灯泡的最小花费,状态转移就是从d[j],j<i,加上 i前面的j+1到i-1种灯泡换成i的花费. 下标排序玩 ...

  8. UVA 11400"Lighting System Design"

    传送门 错误思路 正解 AC代码 参考资料: [1]:https://www.cnblogs.com/Kiraa/p/5510757.html 题意: 现给你一套照明系统,这套照明系统共包含 n 种类 ...

  9. UVA - 11400 Lighting System Design(照明系统设计)(dp)

    题意:共有n种(n<=1000)种灯泡,每种灯泡用4个数值表示.电压V(V<=132000),电源费用K(K<=1000),每个灯泡的费用C(C<=10)和所需灯泡的数量L(1 ...

随机推荐

  1. cadence16.6 中orcad导出网表时ERROR (ORCAP-5004)

    ORCAD网表输出时 ERROR (ORCAP-5004):Error  initializing COM  property   pages 之前遇到过这个问题,解决后忘了记录下来了.依稀记得问题答 ...

  2. Hbase的安装测试工作

    Hbase的安装测试工作: 安装:http://www.cnblogs.com/neverwinter/archive/2013/03/28/2985798.html 测试:http://www.cn ...

  3. 【转载】VMWare ESXi 5.0和vSphere Client安装和配置

      免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:张洪洋_     原文地址:http://blog.sina.com.cn ...

  4. Mysql登录异常的一个问题:

    问题描述: 正常在启动mysql的时候是这样的: 1. win打开输入界面: 2. 输入cmd命令,鼠标右键选择“以管理员身份运行”: 3, 之后再在界面输入登录mysql的登录语句: mysq -u ...

  5. 【BZOJ】【1934】【SHOI 2007】Vote 善意的投票

    网络流/最小割 简单题= =直接利用最小割的性质: 割掉这些边后,将所有点分成了两部分(两个连通块),我们可以假定与S相连的是投赞成票,与T相连的是投反对票. 那么如果一个小朋友原本意愿是睡觉,那么连 ...

  6. java内存分配详细论

    P.S. 想写这篇总结酝酿了有个来月了,却始终感觉还差点什么东西,一直未敢动笔. 最近两天连夜奋战,重新整理下前面查阅的资料.笔记,还是决定将它写出来. 现在提出几个问题,如果都能熟练回答的大虾,请您 ...

  7. Spring @ Component 的作用

    1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@component (把普通pojo实例化到spr ...

  8. CSS 的命名和书写

    CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) ...

  9. hdu1162Eddy's picture

    http://acm.hdu.edu.cn/showproblem.php?pid=1162 最小生成树 #include<iostream> #include<stdio.h> ...

  10. lintcode:合并排序数组

    题目: 合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果 ...