C. Social Distance1300 / 思维 分类讨论
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Social Distance1300 / 思维 分类讨论相关的知识,希望对你有一定的参考价值。
https://codeforces.com/problemset/problem/1367/C
分为三类情况讨论:
- 全0的情况,即没有1
- 只有1个1的情况
- 有多于1个1的情况.
#include<bits/stdc++.h>
using namespace std;
string s;
int t,n,k;
int main(void)
{
cin>>t;
while(t--)
{
cin>>n>>k>>s;
vector<int>ve;
for(int i=0;i<s.size();i++) if(s[i]=='1') ve.push_back(i);
if(ve.size()==0)//没有1
{
int ans=n/(k+1);
if(n%(k+1)) ans++;
cout<<ans<<endl;
}else if(ve.size()==1)//只有1个1
{
int l=ve[0],r=ve[0];
int ans=0;
while(l-k-1>=0) ans++,l=l-k-1;
while(r+k+1<n) ans++,r=r+k+1;
cout<<ans<<endl;
}else//多个1
{
int ans=0;
int l=ve[0],r=ve[ve.size()-1];
while(l-k-1>=0) ans++,l=l-k-1;//处理第一个1之前的
while(r+k+1<n) ans++,r=r+k+1;//处理第最后一个1之后的
for(int i=1;i<ve.size();i++)//处理俩1之间的
{
int l=ve[i-1],r=ve[i];
while(r-(l+k+1)>k) ans++,l=l+k+1;
}
cout<<ans<<endl;
}
}
return 0;
}
以上是关于C. Social Distance1300 / 思维 分类讨论的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #650 (Div. 3) C. Social Distance (前缀和)
基于yolov5的行人检测跟踪与社交距离预测 (pedestrian detection and social distance prediction)
C. Registration system1300 / 哈希
C. Boats Competition1300 / 思维 暴力