zoukankan      html  css  js  c++  java
  • BZOJ 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝( dp )

    先按时间排序( 开始结束都可以 ) , 然后 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 << " ";
    return 0;
    }

    -------------------------------------------------------------------------------- 

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

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 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

    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.

    HINT

    Source

  • 相关阅读:
    正则表达式
    http协议组成(请求状态码)
    谈一谈你对js线程的理解
    CSS 中定位方式有几种,说明他们的意义
    手机端白屏前端优化的方法,5 种以上
    用 js 写一个获取随机颜色的程序
    如何获取本地存储信息
    cuda 版本查阅
    ubuntu16.04 ROS安转及RVIZ启动
    Tensorflow和Caffe 简介
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4558250.html
Copyright © 2011-2022 走看看