codeforce B. Nikita and string

2种方法
#include <algorithm>
#include <stack>
#include <istream>
#include <stdio.h>
#include <map>
#include <math.h>
#include <vector>
#include <iostream>
#include <queue>
#include <string.h>
#include <set>
#include <cstdio>
#define FR(i,n) for(int i=0;i<n;i++)
#define MAX 2005
using namespace std;
const int maxn = 5e3 + 5;
typedef long long ll;
int suma[maxn], sumb[maxn];
char str[maxn];
int main() {
scanf("%s", str + 1);
int len = strlen(str + 1);
suma[0] = 0, sumb[0] = 0;
for (int i = 1; i <= len + 1; i++) {
suma[i] = suma[i - 1] + (str[i] == 'a');
}
int ans = -maxn;
for (int i = 1; i <= len + 1; i++) {
for (int j = i + 1; j <= len + 1; j++) {/// a
int sum = suma[i] + suma[len] - suma[j - 1] + (j - i - 1) - (suma[j - 1] - suma[i]);
ans = max(sum, ans);
}
}
cout << ans << endl;
return 0;
}
2

从大神博客扒来的方法orz 后一个状态是由前一个推来的,因此可以更新.

浙公网安备 33010602011771号