BZOJ 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝( dp )
2015-06-07 12:23
696 查看
先按时间排序( 开始结束都可以 ) , 然后 dp( i ) = max( dp( i ) , dp( j ) + 1 ) ( j < i && 节日 j 结束时间在节日 i 开始时间之前 ) answer = max( dp( i ) ) ( 1 <= i <= n )
--------------------------------------------------------------------------------
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; i++ )#define clr( x , c ) memset( x , c , sizeof( x ) ) using namespace std; const int maxn = 10000 + 5; struct data { int l , r; void Read() { scanf( "%d%d" , &l , &r ); r += l - 1; } bool operator < ( const data &rhs ) const { return r < rhs.r; } }; data A[ maxn ]; int dp[ maxn ]; int main() {// freopen( "test.in" , "r" , stdin ); int n; cin >> n; rep( i , n ) A[ i ].Read(); sort( A , A + n ); rep( i , n ) { dp[ i ] =1; rep( j , i ) if( A[ j ].r < A[ i ].l ) dp[ i ] = max( dp[ i ] , dp[ j ] + 1 ); } int ans = 0; rep( i , n ) ans = max( ans , dp[ i ] ); cout << ans << "\n"; return 0;}
--------------------------------------------------------------------------------
1664: [Usaco2006 Open]County Fair Events 参加节日庆祝
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 262 Solved: 190
[Submit][Status][Discuss]
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
71 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
4OUTPUT DETAILS:
FJ can do no better than to attend events 1, 2, 3, and 4.
HINT
Source
Silver相关文章推荐
- poj 1273 Drainage Ditches 【最大流入门 dinic算法】
- NOI2011阿狸的打字机(fail树+DFS序)
- 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
- LeetCode Contains Duplicate III
- 使用ssh框架时出现 failed to lazily initialize 或者 no session 异常
- 人工智能搜索算法(深度优先、迭代加深、一致代价、A*搜索)
- URAL 1457. Heating Main
- Contains Duplicate
- 如何在 Ubuntu 中更改默认浏览器和 Email 客户端
- ISP Pipeline的关键模块之Demosaic( 三)
- LeetCode Contains Duplicate II
- Aizu 0005
- 错误 1 error LNK2019: 无法解析的外部符号 "public: __thiscall chain<int>::~chain<int>(void)" (??1?$chain@H@@QAE@
- rails使用devise验证
- Microsoft.AlphaImageLoader过滤评论
- Contains Duplicate II
- linux使用mail命令发邮件―第三方smtp
- 我们iTailor智能衣橱项目想法v1.0
- 如何使用Openair4G的OTG以及进行ping操作
- [LeetCode] Contains Duplicate(II,III)