Dãy bit (THTC - Q.Ninh 2021)

Xem PDF

Điểm: 200 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

.

Bài 2: Dãy bit

.


Bình luận


  • 2
    thanphong    9:39 p.m. 22 Tháng 8, 2021

    có ai cho tui xin thuật toán bài này được không


    • 8
      N7hoatt    6:22 p.m. 25 Tháng 8, 2021

      ok nếu như bạn chưa ac thì cách làm của bài này là mình sẽ gọi last_len là độ dài của xâu liên tiếp trước ( cả 0 và 1 đều được) cur_len là độ dài xâu liên tiếp tính tới hiện tại. với mỗi \(i\) thuộc \(0<=i<s.size\) thì kiểm tra nếu \(s[i]==s[i - 1]\)(s[i] có thuộc xâu liên tiếp hiện tại hay không), nếu có thì tăng cur_len nếu không thì ta sẽ đặt last_len = cur_len và cur_len = 1 (s[i] sẽ là phần tử đầu của xâu liên tiếp mới), cuối mỗi lần kiểm tra thì ta lấy res = max(res, min(cur_len, last_len) * 2). Dưới đây là code của mình (C++):

      #include <bits/stdc++.h>
      #define ll long long
      using namespace std;
      
      int n, res;
      int main()
      {
          string s;
          cin >> s;
      
          int last_len = 0, cur_len = 1;
          for(int i = 1; i < s.size(); ++i){
              if(s[i] == s[i - 1]) cur_len++;
              else{
                  last_len = cur_len;
                  cur_len = 1;
              }
              res = max(res, min(cur_len, last_len) * 2);
          }
          cout << res;
      }
      

      • 2
        mcsmuscle    10:24 p.m. 11 Tháng 9, 2021

        Có rồi nhìn trông đơn giản nhưng lúc chưa có suy nghĩ vắt não ý