文章

35

粉丝

0

获赞

195

访问

8.2k

头像
字符串区间翻转 题解 有一个小细节漏掉了,全1的情况吐了喵:
P1642 杭州电子科技大学/南京大学机试题
发布于2026年2月16日 11:43
阅读数 323

#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';...
登录查看完整内容


登录后发布评论

1 条评论
滴滴答答302
2026年3月19日 15:49

我看题目说翻转一次,以为是必须翻转的意思

赞(0)
回复给: