UVa 11400 - Lighting System Design(白书,比较好)

网友投稿 511 2022-09-04

UVa 11400 - Lighting System Design(白书,比较好)

UVa 11400 - Lighting System Design(白书,比较好)

题目地址:= min(dp[i],dp[j]+sum * a[i].c + a[i].k);dp[i]为前i个灯泡的最下值,其中sum为j+1到i的总数量

AC代码

#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;struct node{ int v; int k; int c; int l;}a[1010];int dp[1010];bool cmp(node a,node b){ return a.v < b.v;}int main(){ int n; while(scanf("%d",&n) && n) { memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) scanf("%d%d%d%d",&a[i].v,&a[i].k,&a[i].c,&a[i].l); sort(a+1,a+n+1,cmp);//注意这里的参数 for(int i=1; i<=n; i++) { dp[i] = dp[i-1] + a[i].l * a[i].c + a[i].k;//每次不合并,直接重开 for(int j=0; j<=i; j++) { int sum = 0; for(int k=j+1; k<=i; k++) sum += a[k].l; dp[i] = min(dp[i],dp[j]+sum * a[i].c + a[i].k); } } printf("%d\n",dp[n]); } return 0;}

作者的标称(用了前缀和,大致思想差不多,每次的初始值不一样)

// UVa11400 Lighting System Design// Rujia Liu#include#includeusing namespace std;const int maxn = 1000 + 5;struct Lamp { int v, k, c, l; bool operator < (const Lamp& rhs) const { return v < rhs.v; }} lamp[maxn];int n, s[maxn], d[maxn];int main() { while(cin >> n && n) { for(int i = 1; i <= n; i++) cin >> lamp[i].v >> lamp[i].k >> lamp[i].c >> lamp[i].l; sort(lamp+1, lamp+n+1); s[0] = 0; for(int i = 1; i <= n; i++) s[i] = s[i-1] + lamp[i].l; d[0] = 0; for(int i = 1; i <= n; i++) { d[i] = s[i] * lamp[i].c + lamp[i].k; // 前i个灯泡全买类型i for(int j = 1; j <= i; j++) d[i] = min(d[i], d[j] + (s[i] - s[j]) * lamp[i].c + lamp[i].k); } cout << d[n] << "\n"; } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:UVa 437 - The Tower of Babylon(白书)
下一篇:用好Git 和 SVN ,轻松驾驭版本管理(用好似又仿佛造句子)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~