G题双指针做法86.6分 特判求助!

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
long long  cnt[2];
signed main(){
    int n,a,b;
    cin>>n>>a>>b;
    string s;cin>>s;
    
    s=" "+s;
    long long res=0;
    if(a==0&&b==0) {
        
      res++; 
    }
    for(int i=1,j=0;i<=n;i++){
        int t=0;
        if(s[i]=='0') t=0;
        else t=1;
        while(j<n&&(cnt[0]<a||cnt[1]<b) ){
            j++;
            cnt[s[j]-'0']++;
       }
       if((cnt[0]>=a&&cnt[1]>=b))
        res+=n-j+1;
        
        cnt[s[i]-'0']--;
    }        
    
    cout<<res;
    return 0;
}
就这几行代码 但就是不知道怎么弄那个特判 难道不是a=0 b=0 答案数+1吗?
全部评论
我拿你的代码跑了一下~确实是a=0,b=0的问题,尺取在跑这个的时候可能会因为l和r重合出一点怪问题的(我标程就是这样),所以我标程里是直接特判的,毕竟a=0,b=0的情况和字符串就没关系了
点赞 回复 分享
发布于 2022-04-08 13:31

相关推荐

07-03 16:02
门头沟学院 Java
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务