POJ 2385 DP

竟然自己想出转移方程了 (吃鲸)

(这是水题(尴尬))

题意:

这里写图片描述
这里写图片描述
这里写图片描述

思路:
i表示第i个苹果,选了m-j+1次
初始化
f[i][m+1][0]=f[i-1][m+1][0]+(a[i]==1);
f[i][m+1][0]=f[i-1][m+1][0]+(a[i]==1);
转移
f[i][j][0]=max(f[i-1][j][0],f[i-1][j+1][1])+(a[i]==1);
f[i][j][1]=max(f[i-1][j][1],f[i-1][j+1][0])+(a[i]==2);

//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,a[1050],f[1050][35][2];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)f[i][m+1][0]=f[i-1][m+1][0]+(a[i]==1);
    for(int i=1;i<=n;i++)f[i][m+1][1]=f[i-1][m+1][1]+(a[i]==2);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            f[i][j][0]=max(f[i-1][j][0],f[i-1][j+1][1])+(a[i]==1);
            f[i][j][1]=max(f[i-1][j][1],f[i-1][j+1][0])+(a[i]==2);
        }
    printf("%d
",max(f[n][1][1],f[n][1][0]));
}

这里写图片描述

原文地址:https://www.cnblogs.com/SiriusRen/p/6532297.html