求组hack
查看原帖
求组hack
877860
Just_Love_You楼主2024/7/5 11:51
#include<bits/stdc++.h>
#define int signed long long
using namespace std;
constexpr int N=3e3;
constexpr int M=5e6;
constexpr int mod=1e9+7;
void solve()
{
    int n,k;
    cin >> n >> k;
    string s;
    cin >> s;
    int cnt=1;
    int tmp=n;
    int num=0;
    bool v=false;
    for(int i=s.size()-2;i>=0;i--)
    {
        if(s[i]^*s.rbegin())
        {
            num=i;
            cnt=1;
            break;
        }else cnt++;
        if(cnt>k)
        {
            cnt=1;
            tmp=i;
            v=true;
            break;
        }
    }
    if(!v)
    for(int i=num;i>0;i--)
    {
        if(s[i]^s[i-1])
        {
            if(cnt^k)
            {
                tmp=i+1;
                break;
            }
            cnt=1;
        }else
        {
            cnt++;
        }
        if(cnt>k)
        {
            tmp=i;
            break;
        }
        if(i==1)
        {
            if(cnt^k)
            {
                tmp=cnt;
            }
        }
    }
    string res=s.substr(0,tmp);
    reverse(res.begin(),res.end());
    s+=res;
    for(int i=tmp;i<s.size()-1;i++)
    {
        if(i<tmp+k-1)
        {
            if(s[i]^s[i+1])
            {
                cout << -1 << endl;
                return;
            }
        }
        if(i+k<s.size()&&s[i]==s[i+k])
        {
            cout << -1 << endl;
            return;
        }
    }
    cout << tmp << endl;
}
signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int n;
    cin >> n;
    while(n--)
    solve();

    return 0;
}
2024/7/5 11:51
加载中...