luogu#P5890. 小欧与回文串构造

小欧与回文串构造

题目描述

小欧很喜欢字符串,尤其是只有 01 两种字符的回文串。

小欧也喜欢回文串,尤其是有那么一些回文子串但不是很多的串。

小欧更喜欢构造,所以他思考如下问题:

给定正整数 nnkk,保证 knk\le n,能否构造一个长为 nn 的,只含有字符 01 的字符串 SS,使得 SS 的本质不同非空回文子串个数恰好为 kk 呢?

小欧是构造小鬼,打不过已经爆切十万甚至九万道构造的先辈们,因此他找你帮忙解决这个问题,并希望你在有解时给出任意一个构造。

下面给出一些关于字符串的基本定义,字符串大手子可以跳过不读。

  • 对于长为 nn 的字符串 SS,定义 SiS_i 为字符串 SS 的从左至右第 ii 个字符,
  • 对于长为 nn 的字符串 SS,定义其子串 S[l;r]  (1lrn)S[l;r]\; (1\le l\le r\le n) 为将字符 Sl,Sl+1,,SrS_l,S_{l+1},\ldots,S_{r} 自左至右拼接形成的字符串。特别地,空串也是 SS 的子串。
  • SS 的两个子串 S[l1;r1]S[l_1;r_1]S[l2;r2]S[l_2;r_2] 本质不同,当且仅当 S[l1;r1]S[l2;r2]S[l_1;r_1] \ne S[l_2;r_2]
  • 对于长为 nn 的字符串 SS,定义它的反串 STS^{T} 为将字符 Sn,Sn1,,S1S_n,S_{n-1},\ldots,S_1 自左至右拼接形成的字符串。
  • 字符串 SS 为回文串,当且仅当 S=STS=S^{T}

输入格式

本题有多组数据

第一行一个正整数 TT,表示数据组数。

对于每组数据:

一行两个正整数,表示这组数据给出的 nnkk

输出格式

对于每组数据:

若该组数据没有解,输出一行一个字符串 No

否则输出两行,第一行一个字符串 Yes,接下来一行一个长为 nn01 串,为你构造的解。有多个解输出任意一个即可。

4
4 4
8 6
15 14
114514 1
Yes
0101
No
Yes
010100000111101
No

提示

对于第一组数据,本质不同的回文子串有:10101010 共四个。

数据范围与约定

对于 20%20\% 的数据,n15n\le 15
另有 10%10\% 的数据,k=nk=n
另有 20%20\% 的数据,1000n20001000\le n\le 2000kn2+100k\ge \left\lfloor\dfrac{n}{2}\right\rfloor+100
对于 100%100\% 的数据,1T101 \le T \le 101kn2×1051\le k\le n\le 2\times 10^5