CF1469E.A Bit Similar
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:1024MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Let's call two strings a and b (both of length k) a bit similar if they have the same character in some position, i. e. there exists at least one i∈[1,k] such that ai=bi.
You are given a binary string s of length n (a string of n characters 0 and/or 1) and an integer k. Let's denote the string s[i..j] as the substring of s starting from the i-th character and ending with the j-th character (that is, s[i..j]=sisi+1si+2…sj−1sj).
Let's call a binary string t of length k beautiful if it is a bit similar to all substrings of s having length exactly k; that is, it is a bit similar to s[1..k],s[2..k+1],…,s[n−k+1..n].
Your goal is to find the lexicographically smallest string t that is beautiful, or report that no such string exists. String x is lexicographically less than string y if either x is a prefix of y (and x=y), or there exists such i (1≤i≤min(∣x∣,∣y∣)), that xi<yi, and for any j (1≤j<i) xj=yj.
我们称两个长度均为 k 的字符串 a 和 b 是位相似的(bit similar),如果它们在某个位置上的字符相同,即存在至少一个 i∈[1,k],使得 ai=bi。
给定一个长度为 n 的二进制字符串 s(由 n 个字符 0 和/或 1 组成)以及一个整数 k。记 s[i..j] 表示 s 中从第 i 个字符开始、到第 j 个字符结束的子串(即 s[i..j]=sisi+1si+2…sj−1sj)。
我们称一个长度为 k 的二进制字符串 t 是优美的(beautiful),如果它与 s 中所有长度恰好为 k 的子串均位相似;即 t 与 s[1..k],s[2..k+1],…,s[n−k+1..n] 均位相似。
你的目标是找出字典序最小的优美的字符串 t;若不存在这样的字符串,则报告不存在。字符串 x 的字典序小于字符串 y,当且仅当:(1) x 是 y 的真前缀(即 x=y 且 x 是 y 的前缀),或 (2) 存在某个 i(1≤i≤min(∣x∣,∣y∣)),使得 xi<yi,且对任意 j(1≤j<i)都有 xj=yj。
输入格式
The first line contains one integer q (1≤q≤10000) — the number of test cases. Each test case consists of two lines.
The first line of each test case contains two integers n and k (1≤k≤n≤106). The second line contains the string s, consisting of n characters (each character is either 0 or 1).
It is guaranteed that the sum of n over all test cases does not exceed 106.
第一行包含一个整数 q(1≤q≤10000),表示测试用例的数量。每个测试用例由两行组成。
每个测试用例的第一行包含两个整数 n 和 k(1≤k≤n≤106)。第二行包含一个长度为 n 的字符串 s,其中每个字符均为 0 或 1。
保证所有测试用例的 n 之和不超过 106。
输出格式
For each test case, print the answer as follows:
- if it is impossible to construct a beautiful string, print one line containing the string NO (note: exactly in upper case, you can't print No, for example);
- otherwise, print two lines. The first line should contain the string YES (exactly in upper case as well); the second line — the lexicographically smallest beautiful string, consisting of k characters 0 and/or 1.
对于每个测试用例,请按如下方式输出答案:
- 如果无法构造出优美的字符串,则输出一行字符串
NO(注意:必须严格为大写,例如不能输出No); - 否则,输出两行。第一行应为字符串
YES(同样必须严格为大写);第二行为字典序最小的优美字符串,该字符串由 k 个字符0和/或1组成。
输入输出样例
输入#1
7 4 2 0110 4 2 1001 9 3 010001110 9 3 101110001 10 3 0101110001 10 10 1111111111 11 10 11111111110
输出#1
YES 11 YES 00 YES 010 YES 101 NO YES 0000000001 YES 0000000010
输入解题思路,AI测评打分。不知道怎么写?