如题,ARC150 A题 C题 的解题报告。
A - Continuous 1
题意:
有1, 0, ? 组成的一个序列(?可以为0/1), 问恰好有且仅有k个i, 且连续的情况有多少种。
分析:
考虑O(n). 常见为转化成求以每个 i 结尾的信息。
即求长度为k的序列满足以下条件的有且仅有一个:
- 没有零;(有连续k个1)
- 前后没有1;(恰k个)
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int n, k;
int a[N], b[N];
char s[N];
int main() {
int t;
scanf("%d", &t);
while(t--) {
int ans=0, L=0, R=0;
scanf("%d%d", &n, &k);
cin>>s+1; s[n+1]='0', s[0]='0';
for(int i=1; i<=n; ++i) b[i]=b[i-1] + (s[i]==