文章
26
粉丝
0
获赞
82
访问
2.8k
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int n; string s;
while (cin >> n >> s)
{
int start = 0, end = 0, temp_start = 0;
int cur_total = 0, max_total = 0;
for (int i = 0; i < n; i++)
{
if (s[i] == '1') {
cur_total -= 1; // 遇到 '1',得分 -1(因为翻转后 '1' 会变成 '0')
} else {
cur_total += 1; // 遇到 '0',得分 +1(因为翻转后 '0' 会变成 '1')
}
if (cur_total > max_total) {
max_total = cur_total;
start = temp_start;
end = i;
}
if (cur_total < 0) {
cur_total = 0;
temp_start = i + 1;
}
}
// 翻转区间 [start, end]
for (int i = start; i <= end; i++) {
if(start == 0 && end == 0 && s[i] == '1') break;
s[i] = (s[i] == '0') ? '1' : '0';...
登录后发布评论
暂无评论,来抢沙发