题解:CF2136B Like the Bitset
__DATI_ghc__ · · 题解
CF2136B Like the Bitset 题解
我的第一篇题解,求赞
思路分析
本题要求构造一个长度为
从贪心的角度考虑:
对于每个
为了满足这个条件,我们可以将这些位置的值设为一个较小的数,比如
但要注意,如果一个位置
更优的策略:
我们可以将所有
但这样可能仍然不满足条件,因为如果一个区间包含多个
做法
遍历字符串
AC Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
cin>>n>>k;
string s;
cin>>s;
int cnt=0;
bool flag=true;
for(int i=0; i<n; i++)
{
if(s[i]=='1')
{
cnt++;
if(cnt==k)
{
flag=false;
break;
}
}
else cnt=0;
}
if(!flag) cout<<"NO"<<endl;
else
{
cout<<"YES"<<endl;
int l=1,r=n;
for(int i=0; i<n; i++)
{
if(s[i]=='0') cout<<r--<<" ";
else cout<<l++<<" ";
}
cout<<endl;
}
}
return 0;
}