[USACO Nov07] 挤奶时间

[USACO Nov07] 挤奶时间

时间限制:1 s 内存限制:128 MB
译 By CmYkRgB123
描述
贝茜是一只非常努力工作的奶牛,她总是专注于提高自己的产量。为了产更多的奶,她预计好了接下来的N (1 ≤ N ≤ 1,000,000)个小时,标记为0..N-1。
Farmer John 计划好了 M (1 ≤ M ≤ 1,000) 个可以挤奶的时间段。每个时间段有一个开始时间(0 ≤ 开始时间 ≤ N), 和一个结束时间 (开始时间 < 结束时间 ≤ N), 和一个产量 (1 ≤ 产量 ≤ 1,000,000) 表示可以从贝茜挤奶的数量。Farmer John 从分别从开始时间挤奶,到结束时间为止。每次挤奶必须使用整个时间段。
但即使是贝茜也有她的产量限制。每次挤奶以后,她必须休息 R (1 ≤ R ≤ N) 个小时才能下次挤奶。给定Farmer John 计划的时间段,请你算出在 N 个小时内,最大的挤奶的量。
输入
第 1 行: 三个整数 N, M, R
第 2..M+1 行: 第 i+1 行 每行三个整数,为Farmer John挤奶计划的开始时间,结束时间,产量。
输出
第 1 行:一个整数 在 N 个小时内,最大的挤奶的量.
样例输入
12 4 2
1 2 8
10 12 19
3 6 24
7 10 31
样例输出
43

被这道逗逼题坑了,权且记录一下
n^2 DP

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct point {
    int l, r, dis;
} a[1001];
int n, m, t, f[1001];
int cmp(const point &c, const point &d) {
    return c.r < d.r;
}
int main() {
    freopen("milkprod.in", "r", stdin);
    freopen("milkprod.out", "w", stdout);
    scanf("%d%d%d", &n, &m, &t);
    for (int i = 1; i <= m; ++i)
        scanf("%d%d%d", &a[i].l, &a[i].r, &a[i].dis);
    sort(a + 1, a + m + 1, cmp);
    a[0].r = -99999999;
    for (int i = 1; i <= m; ++i)
        for (int j = 0; j < i; ++j)
            if (a[j].r + t <= a[i].l)
                f[i] = max(f[i - 1], f[j] + a[i].dis);
    printf("%d", f[m]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值