比赛 20090916练习赛 评测结果 WWWWWWWAWW
题目名称 任务安排 最终得分 10
用户昵称 苏轼 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-09-21 19:58:58
显示代码纯文本
#include <cstdio>
#include <cstring>

using namespace std;

struct {
	int T, F;
} rw[5001];
int sumt[5001], sumf[5001];
int dym[5001], tm[5001];

int main ()
{
	freopen("batch.in", "r", stdin);
	freopen("batch.out", "w", stdout);
	
	int N, S;
	scanf("%d%d", &N, &S);

	sumt[0] = sumf[0] = 0;
	for (int i=1; i<=N; i++)
	{
		scanf("%d%d", &(rw[i].T), &(rw[i].F));
		if (i)
			sumt[i] = sumt[i-1] + rw[i].T,
			sumf[i] = sumf[i-1] + rw[i].F;
	}

	for (int i=1; i<=N; i++)
	{
		dym[i] = 0x1FFFFFFF;
		for (int j=1; j<=i; j++)
		{
			int ntm = tm[i-j] + S + (sumt[i] - sumt[i-j]), tmp;
			if ((tmp = dym[i-j] + ntm * (sumf[i] - sumf[i-j])) < dym[i])
				dym[i] = tmp,
				tm[i] = ntm;
		}
	}

	printf("%d\n", dym[N]);

	return 0;
}