比赛 |
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;
}