poj 3616 Milking Time(dp)
2017-08-17 14:53
477 查看
题意;
给定总工作时间n,m个工作区间,休息时间r。在经过每个工作区间后,工人都要休息r时间,同时每个区间工作效率也不一样,求最大收益。
思路;
把给定的工作区间按照升序排列,之后dp,没什么坑点。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct milk{
int st,en,sum;
}qu[1100];
bool cmp(milk a,milk b){
return b.st>a.st;
}
int n,m,r,dp[1000010];
int main(){
while(scanf("%d%d%d",&n,&m,&r)!=EOF){
for(int i=1;i<=m;i++)
scanf("%d %d %d",&qu[i].st,&qu[i].en,&qu[i].sum);
sort(qu+1,qu+1+m,cmp);
dp[1]=qu[1].sum;
for(int i=2;i<=m;i++){
dp[i]=qu[i].sum;
for(int j=i-1;j>=1;j--)
if(qu[j].en+r<=qu[i].st)
dp[i]=max(dp[i],qu[i].sum+dp[j]);
}
int mx=dp[1];
for(int i=2;i<=m;i++)
mx=max(dp[i],mx);
printf("%d\n",mx);
}
return 0;
}
给定总工作时间n,m个工作区间,休息时间r。在经过每个工作区间后,工人都要休息r时间,同时每个区间工作效率也不一样,求最大收益。
思路;
把给定的工作区间按照升序排列,之后dp,没什么坑点。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct milk{
int st,en,sum;
}qu[1100];
bool cmp(milk a,milk b){
return b.st>a.st;
}
int n,m,r,dp[1000010];
int main(){
while(scanf("%d%d%d",&n,&m,&r)!=EOF){
for(int i=1;i<=m;i++)
scanf("%d %d %d",&qu[i].st,&qu[i].en,&qu[i].sum);
sort(qu+1,qu+1+m,cmp);
dp[1]=qu[1].sum;
for(int i=2;i<=m;i++){
dp[i]=qu[i].sum;
for(int j=i-1;j>=1;j--)
if(qu[j].en+r<=qu[i].st)
dp[i]=max(dp[i],qu[i].sum+dp[j]);
}
int mx=dp[1];
for(int i=2;i<=m;i++)
mx=max(dp[i],mx);
printf("%d\n",mx);
}
return 0;
}
相关文章推荐
- POJ 3616 Milking Time(DP,区间和最大)
- 【DP】POJ_3616_Milking Time
- poj 3616 Milking Time(dp)
- POJ - 3616 Milking Time(DP)
- poj3616——Milking Time(dp最大子序列)
- poj 3616 Milking Time ---DP(带权重的区间动态规划)
- POJ 3616 Milking Time (基础DP)
- POJ - 3616 Milking time (DP)
- POJ 3616 Milking Time (dp)
- POJ - 3616 Milking Time(dp)
- [ poj 3616] Milking Time [ DP ]
- poj 3616 Milking Time 【区间DP】
- POJ 3616-Milking Time (基础DP)
- POJ-3616 Milking Time ( DP )
- POJ 3616 Milking Time(dp)
- POJ 3616 Milking Time (DP)
- POJ 3616 D - Milking Time(DP)
- Milking Time (poj 3616 简单DP)
- poj-3616 Milking Time 【DP】
- POJ 3616 Milking Time(简单DP)