zoukankan      html  css  js  c++  java
  • 紫书 例题 9-6 UVa 11400 (线性结构上的动态规划)

    这道题的下标从1开始比较方便,一方面前缀和算的方便一些,一方面涉及到前j

    个灯泡,那么如果从0开始,前3个灯泡就是第0, 1, 2, 3个,非常奇怪。

    所以灵活换下标。

    然后这道题的动规有点暴力枚举的意思,在算出前面答案的前提下枚举当前灯泡用多少去更新当前答案

    #include<cstdio>
    #include<algorithm>
    #define REP(i, a, b) for(int i = (a); i < (b); i++)
    using namespace std;
    
    const int MAXN = 1123;
    struct node
    {
    	int v, k, c, l;
    	bool operator < (const node& rhs) const
    	{
    		return v < rhs.v;
    	}
    }a[MAXN];
    int n, s[MAXN], d[MAXN];
    
    int main()
    {
    	while(~scanf("%d", &n) && n)
    	{
    		REP(i, 1, n + 1) scanf("%d%d%d%d", &a[i].v, &a[i].k, &a[i].c, &a[i].l);
    		sort(a + 1, a + n + 1);
    		REP(i, 1, n + 1) s[i] = s[i-1] + a[i].l;
    		REP(i, 1, n + 1)
    		{
    			d[i] = s[i] * a[i].c + a[i].k; //这里相当于初始化,不要漏, 不然答案是0 
    			REP(j, 1, i + 1)
    				d[i] = min(d[i], d[j] + (s[i] - s[j]) * a[i].c + a[i].k);
    		}
    		printf("%d
    ", d[n]);
    	}
    	return 0;
    }
  • 相关阅读:
    实现PHP Thread基类
    完美实现PHP多线程
    Centos操作记录(一)
    Centos Minimal7 安装问题
    Server Git开发流程
    APP Git协作流程
    git学习笔记
    CentOS安装Nginx
    C++学习笔记(一)
    sql进阶:分组查询、子查询、连接查询
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819455.html
Copyright © 2011-2022 走看看