#P5890. 小欧与回文串构造

    ID: 6628 远端评测题 1000ms 500MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>Special JudgeO2优化洛谷月赛

小欧与回文串构造

题目描述

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

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

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

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

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

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

  • 对于长为 nn 的字符串 SS,定义 SiS_i 为字符串 SS 的从左至右第 ii 个字符,
  • 对于长为 nn 的字符串 SS,定义其子串 S[l;r]  (1≤l≤r≤n)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,Sn−1,…,S1S_n,S_{n-1},\ldots,S_1 自左至右拼接形成的字符串。
  • 字符串 SS 为回文串,当且仅当 S=STS=S^{T}。

输入格式

本题有多组数据。

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

对于每组数据:

一行两个正整数,表示这组数据给出的 nn 和 kk。

输出格式

对于每组数据:

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

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

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

提示

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

数据范围与约定

对于 20%20\% 的数据,n≤15n\le 15。
另有 10%10\% 的数据,k=nk=n。
另有 20%20\% 的数据,1000≤n≤20001000\le n\le 2000,k≥⌊n2⌋+100k\ge \left\lfloor\dfrac{n}{2}\right\rfloor+100。
对于 100%100\% 的数据,1≤T≤101 \le T \le 10,1≤k≤n≤2×1051\le k\le n\le 2\times 10^5。