UVa - 11400 - Lighting System Design

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 energy-efficient design that can properly illuminate the entire hall. According to your design, you need lamps of n different power ratings. For some strange current regulation method, all the lamps need to be fed with the same amount of current. So, each category of lamp has a corresponding voltage rating. Now, you know the number of lamps & cost of every single unit of lamp for each category. But the problem is, you are to buy equivalent voltage sources for all the lamp categories. You can buy a single voltage source for each category (Each source is capable of supplying to infinite number of lamps of its voltage rating.) & complete the design. But the accounts section of your company soon figures out that they might be able to reduce the total system cost by eliminating some of the voltage sources & replacing the lamps of that category with higher rating lamps. Certainly you can never replace a lamp by a lower rating lamp as some portion of the hall might not be illuminated then. You are more concerned about money-saving than energy-saving. Find the minimum possible cost to design the system.

 

Input

 

Each case in the input begins with n (1<=n<=1000), denoting the number of categories. Each of the following n lines describes a category. A category is described by 4 integers - V (1<=V<=132000), the voltage rating, K (1<=K<=1000), the cost of a voltage source of this rating, C (1<=C<=10), the cost of a lamp of this rating & L (1<=L<=100), the number of lamps required in this category. The input terminates with a test case where n = 0. This case should not be processed.

 

Output

 

For each test case, print the minimum possible cost to design the system.

 

Sample Input                                                  Output for Sample Input

3

100 500 10 20

120 600 8 16

220 400 7 18

0

778


动态规划。首先明确一点,如果一种灯泡需要更换,那么这类灯泡就要全换。选取状态d[i]为灯泡1~i 的最小开销,状态转移方程为:d[i] = min(d[i], d[j] + (s[i] - s[j]) * lamp[i].c + lamp[i].k); 表示前 j 个用最优方案,第 j = 1 ~ i 个都用第i种电源。最终答案为d[n]。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <bitset> 
#include <cassert> 
#include <cmath>
#include <functional>

using namespace std;

const int maxn = 1005;

struct Lamp
{
	int v, k, c, l;
	bool operator < (const Lamp& rhs) const {
		return v < rhs.v;
	}
}lamp[maxn];

int n, s[maxn]; // s[i]为前i种灯泡的总数量
int d[maxn]; // d[i]为灯泡1~i的最小开销

void init()
{
	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;
	}
}

void solve()
{
	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] << endl;
}

int main()
{
	ios::sync_with_stdio(false);
	while (cin >> n && n) {
		init();
		solve();
	}

	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【作者】 沈婕; 【导师】 肖双九; 陈刚; 【作者基本信息】 上海交通大学, 软件工程, 2010, 硕士 【摘要】 随着远程教育技术研究的不断深入,学生通过网络链接到站点学习的方式已不能满足现代社会人群对新型学习模式的要求。近年来,网络日益普及,网络课程直播已成为现代远程教育研究和应用中最新的发展趋势和研究热点之一,把网络教育同实时交互结合起来,将使网络教育步入一个新的阶段。网络课程直播中实时交互的出现,使教育者与受教育者之间的活动从异步发展到同步,逐渐摆脱了时间和空间的限制,进行随时随地的学习。本文提出了一种网络课程直播中实时交互的学习模式,设计并实现了网络远程教育系统中的课程直播子系统,为学生在远程学习模式下、直播学习的过程中,与老师交互提供了服务,同时有效地增强了远程学习环境下师生之间的互动,使远程学习者获得了更加完善的学习环境和学习支持服务,为实现更先进的远程教育系统提供了有利的条件。该子系统由网络课程直播模块和实时交互模块两大模块组成。其中网络课程直播模块采用了Windows Media直播方案和CSMX直播方案两种可选方案,实时交互模块中采用了Adobe的Flash Media Server和RTMP协议。该子系统的特点在于它同时结合了直播与交互两大模块,实时性更高,交互性更强。该子系统...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值