您的位置:首页 > 其它

luoguP2439教室利用(贪心,排序,dp)

2017-03-04 20:49 267 查看
题目大意:

读入所有演讲的起始和终止时间;

计算最大的可能演讲总时间
我们假设在某一演讲结束的瞬间我们就可以立即开始另一个演讲。

#include<iostream>
#include<algorithm>
using namespace std;
struct data{
int x;
int y;
}a[5010];
int f[5010]={0};
int cmp(data a,data b){
if (a.x<b.x) return 1;
if (a.x>b.x) return 0;
if (a.y<b.y) return 1;
return 0;
}
int main(){
int n;
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
sort(a+1,a+1+n,cmp);
f[1]=a[1].y-a[1].x;
for (int i=2;i<=n;i++){
for (int j=1;j<i;j++)
if (a[j].y<=a[i].x) f[i]=max(f[i],f[j]); //dp
f[i]+=a[i].y-a[i].x;
}
int ans=0;
for (int i=1;i<=n;i++) ans=max(ans,f[i]);
cout<<ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: