Cosine~He

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

思路:先记录1出现的次数,再将字符串依据周期k分组,记录每组中连续(不连续的话不连续部分1的数量要比0多)出现1的最多次数(选最多的那组)(出现1则加1出现0则减1),将其余的1(没剩余输出0即可)换成0即可输出结果。

代码: 

 

#include <bits/stdc++.h>
#include <stdlib.h>
using namespace std;

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
       int n,k;
       cin>>n>>k;
       string s;
       cin>>s;
       int one=0;
       for(int i=0;i<n;i++)
       {
           if(s[i]=='1') one++;
       }
       int sum1=0;
       for(int i=0;i<k;i++)
       {
           int sum=0;
           for(int i1=i;i1<n;i1=i1+k)
           {
               if(s[i1]=='0') sum--;
               else if(s[i1]=='1') sum++;
               if(sum<0) sum=0;
               sum1=max(sum,sum1);
           }
       }
       cout<<one-sum1<<endl;
    }
    system("pause");
    return 0;
}

 

posted on 2020-12-06 19:12  Cosine~He  阅读(54)  评论(0)    收藏  举报