poj 3616 Milking Time

Posted

tags:

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

这道题 题意有点问题的地方是,当休息时间r=2s时,第七分钟工作完之后第九分钟就能采集牛奶了,而不需要第十分钟。实际间隔是r-1=1分钟

dp[i]代表第i个采奶点的最大采集量。

并不是最后一个采奶点的地方的牛奶量是最多的,最后还需要把m个点的dp[i]比较一遍,找到最大值才是答案。

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 const int maxn=1000000 + 5;
 5 int dp[maxn];
 6 struct cow
 7 {
 8     int s,e,w;
 9 }c[1005];
10 bool cmp(cow a,cow b)
11 {
12     if(a.s!=b.s) return a.s<b.s;
13     if(a.e!=b.e) return a.e<b.e;
14 }
15 int main()
16 {
17     int n,m,r;
18     while(cin>>n>>m>>r)
19     {
20         for(int i=0;i<m;i++)
21         {
22             cin>>c[i].s>>c[i].e>>c[i].w;
23         }
24         sort(c,c+m,cmp);
25 
26         for(int i=0;i<m;i++)
27             dp[i]=c[i].w;
28 
29         for(int i=0;i<m;i++)
30         {
31             for(int j=0;j<i;j++)
32             {
33                 if(c[i].s-c[j].e>=r && c[i].e<=n)
34                 {
35                     dp[i]=max(dp[i],dp[j]+c[i].w);
36                 }
37             }
38         }
39         int ans=0;//**
40         for(int i=0;i<m;i++)
41             ans=max(ans,dp[i]);
42         cout<<ans<<endl;
43         //cout<<dp[m-1]<<endl;
44 
45     }
46     return 0;
47 }

 

以上是关于poj 3616 Milking Time的主要内容,如果未能解决你的问题,请参考以下文章

Milking Time POJ - 3616

poj 3616 Milking Time

POJ3616 Milking Time —— DP

POJ_3616_Milking Time

POJ 3616 Milking Time(加掩饰的LIS)

poj 3616 Milking Time dp