UVA11400 Lighting System Design(DP)】的更多相关文章

You are given the task to design a lighting system for a huge conference hall. After doing a lot of calculation and sketching, you have figured out the requirements for an energy-efficient design that can properly illuminate the entire hall. According t…
题干略. 题意分析: 很容易理解一类灯泡要么全部换要么全不换,其实费用节省的主要原因是由于替换灯泡类型而排除了低压电压源,于是我们就可以推断出灯泡类型替换的原则: 对于两类灯泡a1和a2,a1可以被a2替换的条件是: 1)  v2>v1 2)a2一定存在于最优解中(保证K2不被省去) 3)C2*L1 - C1*L1 - K1<0 基于以上替换原则首先将所有灯泡a1,a2,……,an 按电压非降序排列,我们可以假定状态d[i]为仅考虑前1-i个灯泡时的最优解(最小费用).在计算d[i]时仅考虑用…
题意:共有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]----…
链接: 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).可以把一些灯泡换成电压更高的另一种灯泡以节…
本题难处好像是在于 能够把一些灯泡换成电压更高的灯泡以节省电源的钱 .所以也才有了对最优方案的探求 好的处理方法是依照电压从小到大排序.仅仅能让前面的换成后面的.也就满足了把一些灯泡换成电压更高的灯泡 的要求: 一种电压的灯泡,要么不换.要换则应该全换:换.说明用当前的电源不值:而既然不值则应该所有换掉以避免使用当前电源,不然即添加了灯泡费用又没节省电源费用,亏大了... 状态转移详见代码 #include<cstdio> #include<cstring> #include<…
题意:给出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号电源) 又因为:题目中说可以把一些灯泡换成电压…
这个问题有两个点需要注意: 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.注意到,电压相同的灯泡只需要共享一个对应的电源即可,还有电压低的灯泡可以被电压高的灯泡替代.为了节约成本,你将设计一种系统,使之最便宜. /* 好的处理方法是按照电压从小到大排序,只能让前面的换成后面的,也就满足了 把一些灯泡换成电压更高的灯泡 的要求: 一种电压的灯泡,要么不换,要换则应该全换:换,说明用当前的电源不值:而既然不值则应该全部换掉以避免使用当前电源,不然即增加了灯泡费用又…
分析 先按照电压从小到大排序,做一下前缀和s[i]求i之前的电灯泡的数量. 状态:$ F_i\(表示到\) i$个灯泡的最小开销. 状态转移方程:$ F_i=F_j+(s[i]-s[j])\times c_i + k_i$ 答案是$ F_n$ AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) memset(a,b,sizeof(a)) typedef long long ll; const int Inf=10…
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…