wa了一个不知道那里错了dalaom看看呀
查看原帖
wa了一个不知道那里错了dalaom看看呀
105820
阿尔托莉雅丶楼主2021/6/2 16:53
/* 
* @Author: iSaber  
* @Date: 2021-06-02 16:45:02  
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
typedef long long ll;

int n, m;
ll a[N], f[N][35][2]; //i时间时,移动了j次,站在第1or2树下的最大收益

int main(void)
{
    int w;
    cin >> n >> w;

    for(int i = 1; i <= n; i++)
        cin >> a[i];

    for(int i = 1; i <= n; i++)
        for(int j = 0; j <= w; j++)
        {
            if(a[i] == 1)
            {
                f[i][j][0] = max(f[i - 1][j][0] + 1, f[i - 1][j - 1][1] + 1);
                f[i][j][1] = f[i - 1][j][1];
            }
            else
            {
                f[i][j][1] = max(f[i - 1][j][1] + 1, f[i - 1][j - 1][0] + 1);
                f[i][j][0] = f[i - 1][j][0];
            }
        }
    ll ans = 0;
    // for(int i = 0; i <= w; i++)
        ans = max(max(ans, f[n][w][0]), f[n][w][1]);

    cout << ans << '\n';

    return 0;
}

下载数据看发现standard 555 我的ans是 558

2021/6/2 16:53
加载中...