1. 程式人生 > >POJ 3616 Milking Time 動態規劃

POJ 3616 Milking Time 動態規劃

題意:一個奶牛在0~N時間段內可被取奶,每次擠奶以後必須休息至少R分鐘才能下次繼續擠奶。有M次可以擠奶的時間段,每次取奶對應三個值:開始時間、結束時間、效率值,每次擠奶的過程不能中斷。求出最大效率值。

解法:首先按照結束時間從小到大排序(按照結束時間排序方便後邊的dp);dp[i]表示第i個擠奶時間段後,效率最大值。

轉移方程如下:

初始化:dp[i] = data[i].eff

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;

const int maxn = 2000 + 10;
int N, R, M;
int dp[maxn];
struct Node
{
    int ls, re;//開始時間、結束時間
    int eff;//效率值
}data[maxn];

bool cmp(Node na, Node nb)
{
    return na.re < nb.re;
}
int max(int a, int b)
{
    if(a>b)
        return a;
    return b;
}
int main()
{
    while(scanf("%d %d %d",&N, &M, &R)!=EOF)
    {
        int i, j;
        for(i = 0; i < M; i++)
        {
            scanf("%d %d %d",&data[i].ls,&data[i].re, &data[i].eff);
        }
        sort(data, data + M, cmp);
        //for(i = 0; i < M; i++)
         //   printf("%d %d %d\n",data[i].ls, data[i].re, data[i].eff);
        memset(dp, 0, sizeof(dp));
        dp[0] = 0;
        for(i = 0; i < M; i++)
        {
            dp[i] = max(dp[i], data[i].eff);
            for(j = 0; j < i; j++)
            {
                if( data[j].re + R <= data[i].ls )
                    dp[i] = max(dp[i], dp[j] + data[i].eff);
                else
                    dp[i] = max(dp[i], dp[j]);
            }
        }
        int ans = -1;
        //for(i = 0; i < M; i++)
        //    ans = max(ans, dp[i]);
        printf("%d\n",dp[M-1]);
    }
    return 0;
}



相關推薦

POJ 3616 Milking Time 動態規劃

題意:一個奶牛在0~N時間段內可被取奶,每次擠奶以後必須休息至少R分鐘才能下次繼續擠奶。有M次可以擠奶的時間段,每次取奶對應三個值:開始時間、結束時間、效率值,每次擠奶的過程不能中斷。求出最大效率值

POJ - 3616 Milking Time (動態規劃

lis 時間 indicate fine sig n) muc class ive Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity

POJ 3616 Milking Time 簡單DP

++ cti als mission i++ mit wid ble turn 題目鏈接:http://poj.org/problem?id=3616 題目大意:M個區間,每個區間一個對應一個效率值-多少升牛奶,區間可能重復,現要求取出來一些區間,要求是區間間隔不能小於R,

POJ 3616 Milking Time(加掩飾的LIS)

interval targe rest style pri scanf cep oss before 傳送門: http://poj.org/problem?id=3616 Milking Time Time Limit: 1000MS Memory Limit

poj 3616 Milking Time(dp,類似於最長上升子序列)

題意:給奶牛擠奶,共m次可以擠,給出每次開始擠奶的時間st,結束擠奶的時間ed,還有擠奶的量ef, 每次擠完奶要休息r時間,問最大擠奶量. 題解:此題靈感來自於最長上升子序列的做法 #include <iostream> #include <cstring>

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

POJ 3616 Milking Time(DP,區間和最大)

Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9937 Accepted: 4124 Des

POJ-3616 Milking Time 鶸的DP解題報告

題目:Milking TimeTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 12358Accepted: 5242DescriptionBessie is such a hard-working cow. I

POJ 3616 Milking Time 擠奶問題,帶權區間DP

Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4837 Accepted: 2034 D

POJ 3616 Milking Time DP題解

典型的給出區間任務和效益值,然後求最大效益值的任務取法。 屬於一維DP了。 一維table記錄的資料含義:到當前任務的截止時間前的最大效益值是多少。 注意, 這表示當前任務一定要選擇,但是最終結果是不一定選擇最後一個任務,故此最後需要遍歷找到table陣列的最大值,當然計算

S - Spiderman POJ - 1925 (區間動態規劃

S - Spiderman  POJ - 1925  Dr. Octopus kidnapped Spiderman's girlfriend M.J. and kept her in the West Tower. Now the hero, Spiderman, ha

田忌賽馬 poj 2287 (貪心,動態規劃,貪心+動態規劃)

      題目連結 貪心 ;1:如果田忌的最快馬快於齊王的最快馬,比一場            2: 如果田忌的最快馬慢於齊王的最快馬,則用田忌的最慢馬和齊王的最快馬比賽一場           3: 如果田忌的最快馬和齊王的最快馬一樣快,則比較田忌的最慢馬和齊王的最慢

poj 1088滑雪 (動態規劃

滑雪Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 59524Accepted: 21672DescriptionMichael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向

POJ 1088 滑雪(動態規劃經典)

滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 63875 Accepted: 23387 Description Michael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度

poj 1088 滑雪-----DP 動態規劃

滑雪 Time Limit:1000MS Memory Limit:65536K Total Submissions:57209 Accepted:20771 Description Michael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了

poj 1088 滑雪(動態規劃:記憶化搜尋)

這個題開始想著用動態規劃遞推來做的 但是根本不知從哪裡下手 想了下還是記憶化更方便 我的方法是先把邊界設定為無窮大 每次dfs知道當前點周圍沒有比它還低的位置即可 0ms程式碼如下: #include

POJ 1088 滑雪(動態規劃)(解題報告)

Description Michael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待升降機來載你。Michael想知道載一個區域中最長底滑坡。區域由一個二維陣列給出。陣列的每個數

POJ 1651 Multiplication Puzzle 動態規劃及搜尋

這是一道比較簡單的DP,通過分析可以設最後拿走的牌為i,則所求的最優解就是i左邊和右邊子列的最小連乘積再加上x[a]*x[i]*x[b],因為i將原來的序列劃分為兩個子列,這兩個子列符合“最優子結構”和“重疊子問題”的dp特點,他們的最優解互相之間沒有影響,只會影響全域性問題

Dp Milking Time POJ - 3616

mat bsp urn 時間 clas ios ostream src ++ 題目大意: 一頭奶牛產奶的時間是1-n,農夫有m個時間段可以去收集奶,每次收了奶之後奶牛要休息R時間,求農夫可以收的奶的最大值。 每次自己要想蠻久都想不出怎麽去推,還是做的題太少啦。。。一看題解

Milking Time (poj 3616 簡單DP)

Language: Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5290 Accepted: 2183 Description Bessie is such a