UVA 11400 Lighting System Design

#include
#include
#include
///题解在下面
using namespace std;
#define N 100005
#define inf 0x3f3f3f3f
int dp[N];
struct data
{
    int v,k,c,l;///电压  电源费用  灯泡费用  数量
    friend bool operator <(data a,data b)
    {
        return a.v
 
  


以上是AC 代码。


对电压进行排序


存储每一种从前到后每一种灯泡所需要的数量和


dp[i] 是指  1 - i 灯泡安排完成的最少花费。


替换的时候从 j - i 全部替换成 灯泡 i 然后+ dp【i-1】


询问:会不会漏情况?

答案 : 不会的。

证明:

假设我们用4 替换 1 3 比 替换 1 2 3 划算

也就是 现在已经替换 2 的灯泡(或者是他本身)比 4 的价值更低。

但是 1 的价值要比 4 的高。

但是 1 2 已经完成过替换了

所以 2 的价值 > = 1 的价值

所以我们一开始的假设不成立


所以啦不会漏情况

你可能感兴趣的:(动态规划)