1 条题解

  • 0
    @ 2025-9-15 16:53:41

    由于到最后一个字符还要判断比较麻烦,直接在过程中更新最大值并存储,用 >= 则能取到右边最长 1 串

    #include <bits/stdc++.h>
    using namespace std;
    
    void solve() {
        int n;
        cin >> n;
        string s;
        cin >> s;
        int res = 0, tmp = 0, l = 0, r = 0;
        for (int i = 0; i < n; ++i) {
            if (s[i] == '1') {
                tmp++;
            } else {
                tmp = 0;
            }
            if (tmp >= res) {
                res = tmp;
                r = i + 1;
                l = r - tmp + 1;
            }
      
        }
        cout << l << ' ' << r << ' ' << res << '\n';
    }
    
    int main() {
        int t;
        cin >> t;
        while (t--) {
            solve();
        }
        return 0;
    }
    
    • 1

    信息

    ID
    235
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    99
    已通过
    22
    上传者