Loading

[2020牛客寒假算法基础集训营1]H-nozomi和字符串

这道题跟我之前做过的这道题十分像。直接就改改拿过来用了。

就是将每个0的下标记录。尽量完成k次的变换。那么所获得对于每个变换位置尽量长的11串的长度表示就是 v0[i + m] - v0[i - 1] - 1了

记得特判k大于等于0的数量的情况。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    int n, m, pre = 0, cur = 0, numa = 0, numb = 0;
    cin >> n >> m;
    char c;
    string s;
    int ii = n;
    while (ii--)
    {
        cin >> c;
        s += c;
    }
    vector<int> v0, v1;//分别存0的下标,1的下标
 
    for (int i = 0; i < n; i++)
    {
        if(s[i] == '0')
            v0.push_back(i);
        if(s[i]== '1')
            v1.push_back(i);
    }
    if (v0.size() <= m)
    {
        cout << n << endl;
        return 0;
    }
    vector<int> res;
 
 
    res.push_back(v0[0 + m]);
    for (int i = 1; i + m < v0.size(); i++)
    {
        res.push_back(v0[i + m] - v0[i - 1] - 1);
    }
 
    sort(res.begin(), res.end());
    cout << res[res.size() - 1] << endl;
 
    return 0;
}

 

posted @ 2020-02-07 10:21  ViKyanite  阅读(183)  评论(0编辑  收藏  举报