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;
}

 

 

 

 

 

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

 

posted @ 2018-05-06 22:30  Xzavieru  阅读(115)  评论(0)    收藏  举报