POJ - 3616 Milking Time (動態規劃)
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
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.
Input
* Line 1: Three space-separated integers: N
* Lines 2..M+1: Line i+1 describes FJ‘s ith milking interval withthree space-separated integers: starting_houri , ending_houri , and efficiencyi
Output
* Line 1: The maximum number of gallons of milk that Bessie can product in the Nhours
Sample Input
12 4 2 1 2 8 10 12 19 3 6 24 7 10 31
Sample Output
43
題意:
給出m個取奶時間段和該時間段內的取奶量,每次取奶之後需要休息r個時間段,問最大取奶量
思路:
按時間段右端點排序。
dp[i]表示第i個時間段取奶之後的最大取奶量。
#include<iostream> #include<algorithm> #include<vector> #include<stack> #include<queue> #include<map> #include<set> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #define fuck(x) cout<<#x<<" = "<<x<<endl; #define ls (t<<1) #define rs ((t<<1)+1) using namespace std; typedef long long ll; typedef unsigned long long ull; const int maxn = 100086; const int inf = 2.1e9; const ll Inf = 999999999999999999; const int mod = 1000000007; const double eps = 1e-6; const double pi = acos(-1); int n,m,r; struct node{ int l,r,v; }a[1024]; int dp[maxn]; bool cmp(node a,node b){ return a.r<b.r; } int main() { // ios::sync_with_stdio(false); // freopen("in.txt","r",stdin); scanf("%d%d%d",&n,&m,&r); for(int i=1;i<=m;i++){ scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].v); } sort(a+1,a+1+m,cmp); int ans=0; for(int i=1;i<=m;i++){ dp[i]=a[i].v; for(int j=1;j<i;j++){ if(a[j].r+r<=a[i].l){dp[i]=max(dp[i],dp[j]+a[i].v);} } ans=max(ans,dp[i]); } printf("%d\n",ans); return 0; }View Code
POJ - 3616 Milking Time (動態規劃)