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的主要内容,如果未能解决你的问题,请参考以下文章