魔法少女:愿望卷轴与真名刻印
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}为了实现人们的又一个愿望,魔法少女小 M 找到了一张古老的愿望卷轴。
\hspace{15pt}相传,只有当卷轴上同时铭刻着两位传说魔法师的真名——awdec 和 Fantasy_Blue 时,愿望结界才会被激活。然而,由于岁月的侵蚀,卷轴上的字符已经发生了一些异变。小 M 可以消耗自身的魔力,对卷轴上的字符进行修复。
\hspace{15pt}她的魔力有限,最多只能进行 k 次字符篡改。她想知道,自己能否成功激活这个愿望结界?
\hspace{15pt}我们称一个字符串是好的,当且仅当它同时包含 \texttt{awdec}\texttt{Fantasy\_Blue} 这两个字符串作为其子串
\hspace{15pt}现在给定一个长度为 n 的字符串 S,代表当前的卷轴。
\hspace{15pt}你可以对字符串 S 执行最多 k 次修改操作。每次操作中,你可以选择 S 中的任意一个位置,并将该位置上的字符替换为任意一个大写英文字母、小写英文字母或下划线。
\hspace{15pt}请判断,能否在不超过 k 次修改后,使得字符串 S 变成一个好的字符串。

【名词解释】
\hspace{15pt}子串:从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\le T\le 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行包含两个整数 n,k\left(1\le n\le 10^5,0\le k\le n\right),分别表示字符串的长度和最多允许的修改次数。
\hspace{15pt}第二行包含一个长度为 n 的字符串 S。保证 S 仅由大小写英文字母和下划线组成。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2\times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,如果可以在不超过 k 次修改后将 S 变成好的字符串,请输出 \texttt{Yes};否则输出 \texttt{No}
示例1

输入

复制
4
17 0
awdecFantasy_Blue
17 2
aaaacFantasy_Blue
19 1
awwecwwFantasy_Blue
19 1
Fantasy_Bluewwawwec

输出

复制
Yes
No
Yes
Yes

说明

\hspace{15pt}在第一组数据中,字符串 \texttt{awdecFantasy\_Blue} 本身就同时包含了子串 \texttt{awdec}\texttt{Fantasy\_Blue},需要 0 次修改。因为 0\le k,所以可以变成好的字符串,输出 \texttt{Yes}
\hspace{15pt}在第二组数据中,字符串已经包含了 \texttt{Fantasy\_Blue}。为了凑出 \texttt{awdec},最优的策略是将前缀 \texttt{aaaa} 中的后三个字符分别修改,使其变为 \texttt{awde},即把 \texttt{aaaac} 修改为 \texttt{awdec}。这至少需要修改 3 个字符。但当前最多只允许修改 k=2 次,无法完成目标,输出 \texttt{No}