#include <stdio.h>
#include <iostream>
using namespace std;
int num[1005];
int dp[1005][35][2];
int main()
{
int n, times, maxsum = -1;
scanf("%d%d", &n, ×);
for (int i = 1; i <= n; i++)
{
scanf("%d", &num[i]);
}
for (int i = 1; i <= n; i++)
{
dp[i][0][0] = dp[i - 1][0][0] + (num[i] == 1);
dp[i][0][1] = dp[i - 1][0][1] + (num[i] == 2);
for (int j = 1; j <= times; j++)
{
dp[i][j][0] = max(dp[i - 1][j - 1][1], dp[i - 1][j][0]) + (num[i] == 1);
dp[i][j][1] = max(dp[i - 1][j - 1][0], dp[i - 1][j][1]) + (num[i] == 2);
maxsum = max(maxsum, max(dp[i][j][0], dp[i][j][1]));
}
}
printf("%d\n", maxsum);
return 0;
}
1750: [Usaco2005 qua]Apple Catching (动态规划)
最新推荐文章于 2023-03-22 20:35:01 发布