cojs 简单的01串 题解报告

题意显然是求n位二进制串中不大于其逆序串,取反串,逆序取反串的所有串按字典序排序后的第k个

 

由于n很小,k很大所以我们可以考虑逐位确定

问题转化为了求方案数,这显然是可以用数位DP做的

设f[len][rev][inv]表示当前前缀长度为len,rev表示是否等于其逆序串,inv表示是否等于其逆序取反串

枚举当前点的选择可能性和对称点的选择可能性并判断合法性转移即可

至于为什么不用考虑去取反串的限制呢?

因为显然我们的首位是0,然后取反串的限制就没了QAQ

注意当n是奇数,在中间的时候当前点和对称点会重合,此时要额外判断是否当前点的对称点的方案是否相等

至于转移自己脑补即可

posted @ 2016-05-14 10:29  _Vertical  阅读(159)  评论(0编辑  收藏  举报