Hướng dẫn giải của Nhị phân K


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: YugiHacker

Do ~n \le 20~, ta có thể duyệt đệ quy hoặc duyệt bitmask để sinh toàn bộ các xâu nhị phân có thể.

Với mỗi xâu nhị phân, cần kiểm tra xem đoạn các số ~1~ liên tiếp dài nhất có đúng bằng ~k~ hay không, nếu có thì xâu nhị phân đó là một xâu nhị phân thoả mãn.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 1
    hohoanghai5042011  đã bình luận lúc 19, Tháng 1, 2024, 4:42

    include <bits/stdc++.h>

    define ll long long

    define fi first

    define se second

    define el "\n"

    define pb push_back

    define fastIO iosbase::syncwith_stdio(0), cin.tie(0), cout.tie(0);

    using namespace std;

    const ll oo = 1e18;

    int n,k,a[100001];

    void xuli(){ ll d=0,res=0; for(int i=1;i<=n;++i){ if(a[i]==1) res++; else{ d=max(d,res); res=0; } } d=max(d,res); if(d==k){ for(int i=1;i<=n;++i){ cout<<a[i]; } cout<<el; } }

    void Try(int i){ for (int j = 0;j<=1;j++){ a[i] = j; if (i == n) xuli(); else Try(i+1); } }

    void solve(){ cin >> n >> k; Try(1); }

    int main(){ fastIO;

    solve();
    

    return 0; }