CF2236B Tatar TV Show

题目描述

假期期间,Egor 来到喀山拜访他的朋友 Dabir。因为实在太无聊了,Dabir 和 Egor 想出了一个新生意点子:制作属于自己的电视节目。 节目的形式非常简单:每一期节目他们都会邀请一位嘉宾,并和他一起玩一个与二进制字符串相关的游戏。 在今天的节目中,Egor 和 Dabir 邀请了 Omsk 最有名的名人 Arseniy(又名 MAKAN)。本次游戏,他们选择了一个长度为 $n$ 的二进制字符串 $s$ 和一个整数 $k$。 Arseniy 可以进行无限多次操作。每次操作,他可以选择一个整数 $i$($1 \le i \le n - k$),并翻转第 $i$ 个和第 $i+k$ 个位置的字符,也就是说,把 $0$ 变成 $1$,把 $1$ 变成 $0$。 例如,如果 $s = 10110$,$k = 2$,选择 $i = 2$,则 Arseniy 会把第 $2$ 个和第 $4$ 个字符翻转,结果为 $[10110 \rightarrow 11100]$。 Arseniy 希望获得大奖——$1\,000\,000$ 图格里克。为此,他需要让整个字符串 $s$ 全部变为 $0$。 请你帮 Arseniy 判断,他能否获得奖金,或者只能空手回到 Omsk。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 2 \cdot 10^5$)。 第二行包含一个长度为 $n$ 的二进制字符串 $s$。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果 Arseniy 能将字符串全部变为 $0$,输出 "YES";否则输出 "NO"。 输出可以不区分大小写(例如,"yES"、"yes" 或 "Yes" 都是可以的)。

说明/提示

由 ChatGPT 5 翻译