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

Problem - 1367C - Codeforces

 1300*C. Social Distance(贪心&构造)_第1张图片

1300*C. Social Distance(贪心&构造)_第2张图片

解析: 

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

#include
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=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;
}

你可能感兴趣的:(codeforces,算法,数据结构,c语言,开发语言,贪心,构造)