zoukankan      html  css  js  c++  java
  • BZOJ 3384: [Usaco2004 Nov]Apple Catching 接苹果( dp )

    dp

    dp( x , k ) = max( dp( x - 1 , k - 1 ) + *** , dp( x - 1 , k ) + *** ) *** = 0 or 1 ,根据情况

    (BZOJ 1750双倍经验) 

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

    #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 ) )
    #define Rep( i , n ) for( int i = 1 ; i <= n ; ++i )
     
    using namespace std;
     
    const int maxn = 1000 + 5;
    const int maxm = 30 + 5;
     
    int d[ maxn ][ maxm ];
    int pos[ maxn ];
    int n , t;
     
    int dp( int x , int k ) {
    if( x < 1 || k < 0 ) return 0;
    int &ans = d[ x ][ k ];
    if( ans != -1 ) return ans;
    ans = 0;
    int p = 1 & k;// 0 -> 1 , 1 -> 2
    ans = max( dp( x - 1 , k ) + ( p == pos[ x ] ), dp( x - 1 , k - 1 ) + ( p != pos[ x ] ) );
    return ans;
    }
     
    int main() {
    freopen( "test.in" , "r" , stdin );
    clr( d , -1 );
    cin >> n >> t;
    Rep( i , n ) 
       scanf( "%d" , pos + i ) , pos[ i ]--;
    d[ 1 ][ 0 ] = ! pos[ 1 ];
    int ans = 0;
    rep( i , t + 1 ) ans = max( dp( n , i ) , ans );
    cout << ans << " ";
    return 0;
    }

      

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

    3384: [Usaco2004 Nov]Apple Catching 接苹果

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 23  Solved: 18
    [Submit][Status][Discuss]

    Description

        很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2),每一棵树上都长满了苹果.奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果从树上落下.但是,由于苹果掉到地上会摔烂,贝茜必须在半空中接住苹果(没有人爱吃摔烂的苹果).贝茜吃东西很快,所以她接到苹果后仅用几秒钟就能吃完.每一分钟,两棵苹果树其中的一棵会掉落一个苹果.贝茜已经过了足够的训练,只要站在树下就一定能接住这棵树上掉落的苹果.同时,贝茜能够在两棵树之间快速移动(移动时间远少于1分钟),因此当苹果掉落时,她必定站在两棵树其中的一棵下面.此外,奶牛不愿意不停地往返于两棵树之间,因此会错过一些苹果, 苹果每分钟掉落一个,共T(1≤T≤1000)分钟,贝茜最多愿意移动W(I≤w≤30)次.现给
    出每分钟掉落苹果的树的编号,要求判定贝茜能够接住的最多苹果数.开始时贝茜在1号树下.

    Input

        第1行:由空格隔开的两个整数T和W.
        第2到T+1行:1或2(每分钟掉落苹果的树的编号).

    Output

     
        在贝茜移动次数不超过W的前提下她能接到的最多苹果数

    Sample Input

    7 2
    2
    1
    1
    2
    2
    1
    1

    Sample Output

    6

    HINT

      7分钟内共掉落7个苹果一一第1个从第2棵树上掉落,接下来的2个苹果从第1棵树上掉落,再接下来的2个从第2棵树上掉落,最后2个从第1棵树上掉落.   贝茜不移动直到接到从第1棵树上掉落的两个苹果,然后移动到第2棵树下,直到接到从第2


    树上掉落的两个苹果,最后移动到第1棵树下,接住最后两个从第1棵树上掉落的苹果.这样贝茜共接住6个苹果.


    Source

  • 相关阅读:
    FPGA基础学习(2) -- FIFO IP核(Quartus)
    FPGA中如何实现除法?
    GPIO初始化之PB3/PB4/PA13/PA14/PA15引脚的复用--寄存器版本
    图像处理实际应用启发
    霍夫变换(hough transform)
    傅里叶变换讲解
    模拟电路学习入门的建议(综合整理)
    低噪声APD偏置电路
    如何安装altium designer 10
    后仿真
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4600864.html
Copyright © 2011-2022 走看看