WA on text # 92 求助
查看原帖
WA on text # 92 求助
609565
OtterZ楼主2023/11/7 13:07
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
int n,a[1000009],k;
unsigned long long bits;
bool dead[(1 << 20) + 9];
signed main(){
	int t;
	scanf("%lld",&t);
	while(t--){
		scanf("%lld %lld",&n,&k);
		for(int i = 1; i <= n; i ++){
			scanf("%1lld",&a[i]);
		}
		bits = 0;
		for(int i = max(k - 20 + 1,1ll); i <= k; i ++){
			bits = (bits << 1) | !a[i];
		}
		dead[bits] = true;
		for(int i = k + 1; i <= n; i ++){
			bits = ((1 << min(20ll,k)) - 1) &((bits << 1) | !a[i]);
			dead[bits] = true;
		}
		for(int i = 0; i < (1 << min(20ll,k)); i ++){
			if(!dead[i]){
				puts("YES");
				for(int j = 1; j <= k - min(20ll,k); j ++)
					putchar('0');
				for(int j = min(20ll,k) - 1; j >= 0; j --){
					putchar(48 + ((i & (1 << j)) != 0));
				}
				goto end;
			}
		} 
		printf("NO");
		end:
		bits = 0;
		for(int i = max(k - 20 + 1,1ll); i <= k; i ++){
			bits = (bits << 1) | !a[i];
		}
		dead[(bits)] = false;
		for(int i = k + 1; i <= n; i ++){
			bits = ((1 << min(20ll,k)) - 1) &((bits << 1) | !a[i]);
			dead[bits] = false;
		}
		puts("");
	}
	return 0;
}
2023/11/7 13:07
加载中...