poj 2385Apple Catching(简单dp)

简介:

/*
    题意: 有两棵苹果树,每一棵苹果树每一秒间隔的掉落下来一个苹果,一个人在树下接住苹果,不让苹果掉落!
    人在两棵树之间的移动是很快的!但是这个人移动的次数是有限制的,问最多可以接住多少个苹果!
    
    思路:dp[i][j]表示的是前 i个苹果掉落之后, 移动次数是j的情况下的最多接住的苹果的个数!
    
    那么dp[i][j]=max(dp[i-1][j], dp[i][j-1]) + a[i]==j%2+1 ? 1 : 0;
    
    a[i]==j%2+1 表明第j次移动恰好移动到 第 a[i]棵苹果树下,此时这棵苹果树这号掉落下了苹果,正好接住! 
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define M 1005
using namespace std;

int dp[M][35];

int n, m;
int a[M];

int main(){
   scanf("%d%d", &n, &m);
   for(int i=1; i<=n; ++i)
      scanf("%d", &a[i]);
   if(a[1]==1) dp[1][0]+=1;
   for(int i=2; i<=n; ++i){
       dp[i][0]=dp[i-1][0];
       if(a[i]==1)
          dp[i][0]+=1;
   }
      
   for(int j=1; j<=m; ++j)
      for(int i=j; i<=n; ++i){
             dp[i][j]=max(dp[i][j-1], dp[i-1][j]);
           int cc=j%2+1;
           if(a[i]==cc)
              dp[i][j]+=1;
      } 
   printf("%d\n", dp[n][m]);
   return 0;
}

目录
相关文章
|
6月前
poj-1611-The Suspects
poj-1611-The Suspects
27 0
|
人工智能 机器学习/深度学习
|
人工智能 BI
|
人工智能 BI
poj-3185-开关问题
描述   牛一行20他们喝的水碗。碗可以那么(面向正确的为清凉水)或颠倒的(一个位置而没有水)。他们希望所有20个水碗那么,因此用宽鼻子翻碗。   嘴太宽,他们不仅翻转一碗还碗的碗两侧(总共三个或三个——在两端的情况下碗——两碗)。
811 0
|
并行计算 网络架构
poj-1005-l tanink i need a houseboat
Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned ...
983 0
POJ 2487 Stamps
Description Background Everybody hates Raymond. He’s the largest stamp collector on planet earth and because of that he always makes fun of all the others at the stamp collector parties.
1062 0