50分求调,悬关
查看原帖
50分求调,悬关
890321
mooktian楼主2024/12/10 12:17

求大佬帮忙看看,实在是找不到问题在哪?

#include <iostream>
#include <cstring>
using namespace std;

const int M = 1000300;
const int inf = 100000000;
int dp[2][2001005],l,r,sum[2];
char str[2000005];

int main() {
    int n;
    cin >> n;
    for(int i = 0;i <= 2001000;i++) dp[0][i] = -inf;
    dp[0][M] = 0;
    for(int i = 1;i <= n;i++) {
        scanf("%s",str);
        int len = strlen(str);
        sum[0] = 0,sum[1] = 0;
        for(int j = 0;j < len;j+= 2) {
            if(str[j] == 'c') sum[0] ++;
            else sum[1] ++;
        }
        int v = sum[1] - sum[0] , w = sum[0];
    
    	l = min(l,l + v) , r = max(r , r + v);
        for(int j = l;j <= r;j++) {
        	dp[i&1][j+M] = max(dp[i&1][j+M],dp[i&1^1][j+M]);
            dp[i&1][j+M] = max(dp[i&1][j+M],dp[i&1^1][j-v+M] + w);
        }
        
    }
    printf("%d\n",dp[n&1][M]);
    return 0;
}
2024/12/10 12:17
加载中...