[USACO07NOV]挤奶的时间Milking Time

Posted 日拱一卒 功不唐捐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[USACO07NOV]挤奶的时间Milking Time相关的知识,希望对你有一定的参考价值。

https://daniu.luogu.org/problemnew/show/2889

 

按右端点从小到大排序后DP

dp[i] 到第i个时间段的最大产奶量

不能按左端点排序,第i段由第j段更新时,第j段可能没挤奶,i,j都处于第k(k<j)段之后的休息时间

 

#include<cstdio>
#include<iostream>
#include<algorithm>

using namespace std;

#define N 1001

int dp[N];

struct node
{
    int l,r,w;
}e[N];

void read(int &x)
{
    x=0; char c=getchar();
    while(!isdigit(c)) c=getchar();
    while(isdigit(c)) { x=x*10+c-0; c=getchar(); }
}

bool cmp(node p,node q)
{
    return p.r<q.r;
}

int main()
{
    int n,m,R;
    read(n); read(m); read(R);
    for(int i=1;i<=m;++i) read(e[i].l),read(e[i].r),read(e[i].w);
    sort(e+1,e+m+1,cmp);
    for(int i=1;i<=m;++i)
    {
        dp[i]=max(dp[i-1],e[i].w);
        for(int j=1;j<i;++j)
            if(e[j].r+R<=e[i].l) 
              dp[i]=max(dp[j]+e[i].w,dp[i]);
    }
    cout<<dp[m];
}

 

 

 

 

题目描述

Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that she decides to schedule her next N (1 ≤ N ≤ 1,000,000) hours (conveniently labeled 0..N-1) so that she produces as much milk as possible.

Farmer John has a list of M (1 ≤ M ≤ 1,000) possibly overlapping intervals in which he is available for milking. Each interval i has a starting hour (0 ≤ starting_houri ≤ N), an ending hour (starting_houri < ending_houri ≤ N), and a corresponding efficiency (1 ≤ efficiencyi ≤ 1,000,000) which indicates how many gallons of milk that he can get out of Bessie in that interval. Farmer John starts and stops milking at the beginning of the starting hour and ending hour, respectively. When being milked, Bessie must be milked through an entire interval.

Even Bessie has her limitations, though. After being milked during any interval, she must rest R (1 ≤ R ≤ N) hours before she can start milking again. Given Farmer Johns list of intervals, determine the maximum amount of milk that Bessie can produce in the N hours.

奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量。

输入输出格式

输入格式:

 

  • Line 1: Three space-separated integers: N, M, and R

  • Lines 2..M+1: Line i+1 describes FJ‘s ith milking interval withthree space-separated integers: starting_houri , ending_houri , and efficiencyi

 

输出格式:

 

  • Line 1: The maximum number of gallons of milk that Bessie can product in the N hours

 

输入输出样例

输入样例#1: 复制
12 4 2
1 2 8
10 12 19
3 6 24
7 10 31
输出样例#1: 复制
43

以上是关于[USACO07NOV]挤奶的时间Milking Time的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ1642][Usaco2007 Nov]Milking Time 挤奶时间

[USACO07NOV] Milking Time

[USACO1.2]挤牛奶Milking Cows

[bzoj1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机_网络流

洛谷—— P1204 [USACO1.2]挤牛奶Milking Cows

bzoj1733[Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+网络流最大流