文章

26

粉丝

0

获赞

82

访问

2.8k

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

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


登录后发布评论

暂无评论,来抢沙发