当前位置:首页 > 编程笔记 > 正文
已解决

1300*C. Social Distance(贪心构造)

来自网友在路上 151851提问 提问时间:2023-10-30 14:54:05阅读次数: 51

最佳答案 问答题库518位专家为你答疑解惑

Problem - 1367C - Codeforces

 

解析: 

        统计出所有连续0序列,并且记录其左右两侧有没有1,然后对于四种情况分别判断即可。

#include<bits/stdc++.h>
using namespace std;
int t,n,k;
signed main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);string s;cin>>s;int f=0,l,r,res=0,p,q;for(int i=0;i<n;i++){if(i==0&&s[i]=='0'){f=1,l=0,p=0;continue;}if(s[i]=='0'){if(!f) f=1,l=i,p=1;}else{if(f){r=i,f=0,q=1;if(p){if(q){int tt=(r-l);if((tt%(k+1))>=k) res+=tt/(k+1);else res+=tt/(k+1)-1;}else res+=(r-l)/(k+1);}else{if(q) res+=(r-l)/(k+1);else res+=1+(r-l-1)/(k+1);}p=q=0;}}}if(f){r=s.size();if(p){if(q){int tt=(r-l);if((tt%(k+1))>=k) res+=tt/(k+1);else res+=tt/(k+1)-1;}else res+=(r-l)/(k+1);}else{if(q) res+=(r-l)/(k+1);else res+=1+(r-l-1)/(k+1);}}printf("%d\n",res);}return 0;
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"1300*C. Social Distance(贪心构造)":http://eshow365.cn/6-27876-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!