博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
例题9-6 UVa11400 Lighting System Design(DP)
阅读量:7130 次
发布时间:2019-06-28

本文共 933 字,大约阅读时间需要 3 分钟。

题意:

看白书

要点:

其他的白书上讲的比较清楚了,状态转移方程为:d[i] = min(d[i], d[j] + (s[i] - s[j])*bulb[i].c + bulb[i].k),有点难以理解的是如果i到j之中有的不进行换比较合理怎么办?但其实这种情况是不存在的,这个博客进行了详细的数学推导:

#include
#include
#include
#include
#define inf 0x3f3f3f3fusing namespace std;int d[1005], s[1005];typedef struct node{ int v, k, c, l;}node;node bulb[1005];bool cmp(node a, node b){ return a.v < b.v;}int main(){ int n,i,j; while (scanf("%d", &n) && n) { for (i = 1; i <= n; i++) scanf("%d%d%d%d", &bulb[i].v,&bulb[i].k,&bulb[i].c,&bulb[i].l); sort(bulb + 1, bulb + 1 + n, cmp); memset(d, inf, sizeof(d)); memset(s, 0, sizeof(s)); d[0] = 0; for (i = 1; i <= n; i++) s[i] = s[i - 1] + bulb[i].l; for (i = 1; i <= n; i++) for (j = 0; j < i; j++) d[i] = min(d[i], d[j] + (s[i] - s[j])*bulb[i].c + bulb[i].k); printf("%d\n", d[n]); } return 0;}

转载于:https://www.cnblogs.com/seasonal/p/10343735.html

你可能感兴趣的文章
虚拟机扩容mac
查看>>
VI的配置
查看>>
LVS学习笔记
查看>>
Lambda
查看>>
springboot 测试类
查看>>
利用javapns对IOS进行推送
查看>>
求1+2+3+...+n
查看>>
TeX教程
查看>>
C# DataTable 通过Linq分组
查看>>
bzoj 4484 [Jsoi2015]最小表示——bitset
查看>>
问题 C: A+B Problem II
查看>>
react踩坑 - 1, componentDidMount使用
查看>>
busybox microcom
查看>>
hdu6376 度度熊剪纸条 思维
查看>>
二维数组转换成一维数组
查看>>
API 3个 js对象
查看>>
NUC1178 Kickdown
查看>>
理解和运用javascript中的call及apply
查看>>
VUE-CLI 设置页面title
查看>>
微信备份方法
查看>>