这个问题有两个点需要注意: 1. 对于一种灯泡,要么全换,要么全不换. 证明: 设一种灯泡单价为p1,电池价格为k1,共需要L个,若把L1个灯泡换成单价为p2,电池为k2的灯泡,产生的总花费为p1*L1+k1 + p2*(L-L1)+k2 (1).全不换为p1*L+k1 (2),全换为p2*L+k2 (3).让(1)式分别跟(2),(3)式做差,会发现一正一负的情况,从数学的角度上证明了,要么全换,要么全不换. 2.如果我要用第i种灯泡去替换前面的灯泡,那么一定是连续的替换,不可能出现间断,这也…
题意:给出n种灯泡,分别给出它们的电压v,电源费用k,每个灯泡的费用c,和所需灯泡的数量l,问最优方案的费用 看的紫书= = 首先是dp[i]为灯泡1到i的最小费用, dp[i]=min(dp[i],dp[j]+(s[i]-s[j])*a[i].c+a[i].k); 表示前j个先用最优方案买,然后第j个到第i个都用i号电源(唉= =想这里想了好久的说,不过后来发现紫书上是这样写的:同一种灯泡可以使用一个电源,所以这里从第j个到第i个灯泡都使用的是i号电源) 又因为:题目中说可以把一些灯泡换成电压…
Problem F Lighting System Design Input: Standard Input Output: Standard Output You are given the task to design a lighting system for a huge conference hall. After doing a lot of calculation & sketching, you have figured out the requirements for an e…
意甲冠军  地方照明系统设计  总共需要n不同类型的灯泡  然后进入 每个灯电压v  相应电压电源的价格k  每一个灯泡的价格c   须要这样的灯泡的数量l   电压低的灯泡能够用电压高的灯泡替换   每种灯泡仅仅须要一个相应的电源   求完毕这个照明系统的最少花费 比較简单的DP  easy知道 当要替换一种灯泡中的一个到令一种电压较高的灯泡时  仅仅有所有替换这样的灯泡为还有一种时才可能使总花费变小   所有替换掉就省下了这样的灯泡的电源花费   先把灯泡依照电压排序   那么每种灯泡都能够…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2395 题意: 有n(n≤1000)种灯泡,不同种类的灯泡必须用不同的电源,但同一种灯泡可以共用一个电源.每种灯泡用4个数值表示:电压值V(V≤132000),电源费用K(K≤1000),灯泡单价C(C≤10)和所需数量L(1≤L≤100).可以把一些灯泡换成电压更高的另一种灯泡以节…
题意:共有n种(n<=1000)种灯泡,每种灯泡用4个数值表示.电压V(V<=132000),电源费用K(K<=1000),每个灯泡的费用C(C<=10)和所需灯泡的数量L(1<=L<=100).把一些灯泡换成电压更高的另一种灯泡以节省电源的钱(不能换成电压更低的灯泡).计算出最优方案费用. 分析: 1.每种电压的灯泡要么全换要么全不换,否则电压不同,需要买更多电源不划算. 2.把灯泡按电压从小到大排序. 3.sum[i]---前i种灯泡的总数量 4.dp[i]----…
传送门 错误思路 正解 AC代码 参考资料: [1]:https://www.cnblogs.com/Kiraa/p/5510757.html 题意: 现给你一套照明系统,这套照明系统共包含 n 种类型的灯: 其中第 i 中类型的灯包含四个参数:vi,ki,ci,li,分别表示 vi : 第 i 种类型的灯正常工作所需要的电压源: ki : 购买电压源 vi 的花费: ci : 第 i 种灯泡的单价: li : 这套照明系统需要第 i 种灯的个数 购买第 i 种灯的花费为 costi = ki+…
题意: 一共有n种灯泡,不同种类的灯泡必须用不同种电源,但同一种灯泡可以用同一种电源.每种灯泡有四个参数: 电压值V.电源费用K.每个灯泡的费用C.所需该种灯泡的数量L 为了省钱,可以用电压高的灯泡来代替电压低的灯泡.输出最小费用. 分析: 每种电源的灯泡要么不换要么全换,因为只换部分的话,两种类型的电源都要买,不划算. 将电压从小到大排序,s[i]表示前i种灯泡一共需要多少个灯泡,d[i]表示前i种灯泡最少费用. d[i] = min{d[j] + (s[i] - s[j]) * c[i] +…
本题难处好像是在于 能够把一些灯泡换成电压更高的灯泡以节省电源的钱 .所以也才有了对最优方案的探求 好的处理方法是依照电压从小到大排序.仅仅能让前面的换成后面的.也就满足了把一些灯泡换成电压更高的灯泡 的要求: 一种电压的灯泡,要么不换.要换则应该全换:换.说明用当前的电源不值:而既然不值则应该所有换掉以避免使用当前电源,不然即添加了灯泡费用又没节省电源费用,亏大了... 状态转移详见代码 #include<cstdio> #include<cstring> #include<…
首先是一个贪心,一种灯泡要么全都换,要么全都不换. 先排序,定义状态d[i]为前面i种灯泡的最小花费,状态转移就是从d[j],j<i,加上 i前面的j+1到i-1种灯泡换成i的花费. 下标排序玩脱了... #include<bits/stdc++.h> using namespace std; ; int V[maxn], K[maxn], C[maxn], L[maxn]; int d[maxn],r[maxn],s[maxn]; bool cmp(int a,int b) { ret…