首页 > 其他 > 详细

bzoj1664: [Usaco2006 Open]County Fair Events 参加节日庆祝

时间:2018-12-11 23:59:17      阅读:283      评论:0      收藏:0      [点我收藏+]

 

Description

Farmer John has returned to the County Fair so he can attend the special events (concerts, rodeos, cooking shows, etc.). He wants to attend as many of the N (1 <= N <= 10,000) special events as he possibly can. He‘s rented a bicycle so he can speed from one event to the next in absolutely no time at all (0 time units to go from one event to the next!). Given a list of the events that FJ might wish to attend, with their start times (1 <= T <= 100,000) and their durations (1 <= L <= 100,000), determine the maximum number of events that FJ can attend. FJ never leaves an event early.

 

有N个节日每个节日有个开始时间,及持续时间. 牛想尽可能多的参加节日,问最多可以参加多少. 注意牛的转移速度是极快的,不花时间.

Input

* Line 1: A single integer, N.

* Lines 2..N+1: Each line contains two space-separated integers, T and L, that describe an event that FJ might attend.

Output

* Line 1: A single integer that is the maximum number of events FJ can attend.

Sample Input

7
1 6
8 6
14 5
19 2
1 8
18 3
10 6

INPUT DETAILS:

Graphic picture of the schedule:
11111111112
12345678901234567890---------这个是时间轴.
--------------------
111111 2222223333344
55555555 777777 666

这个图中1代表第一个节日从1开始,持续6个时间,直到6.

Sample Output

4

OUTPUT DETAILS:

FJ can do no better than to attend events 1, 2, 3, and 4.

 


 

 

一个普通的dp

按时间轴排序,蓝后

$f[a[i].l+a[i].r-1]=max(f[a[i].l+a[i].r-1],f[a[i].l-1]+1)$

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int max(int a,int b){return a>b?a:b;}
 7 struct data{int l,r;}a[10005];
 8 bool cmp(const data &A,const data &B){return A.r<B.r;}
 9 int n,f[100005],m;
10 int main(){
11     scanf("%d",&n);
12     for(int i=1;i<=n;++i){
13         scanf("%d%d",&a[i].l,&a[i].r);
14         a[i].r+=a[i].l-1; m=max(m,a[i].r);
15     }sort(a+1,a+n+1,cmp);
16     for(int i=1,j=1;i<=m;++i){
17         f[i]=max(f[i],f[i-1]);
18         for(;a[j].r<=i&&j<=n;++j)
19             f[i]=max(f[i],f[a[j].l-1]+1);
20     }printf("%d",f[m]);
21     return 0;
22 }
View Code

 

bzoj1664: [Usaco2006 Open]County Fair Events 参加节日庆祝

原文:https://www.cnblogs.com/kafuuchino/p/10105454.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!