怎么也没想到是子集DP,想到了应该就没什么难度了。

首先n>21时必定为NO。

g[i][j]表示位置i后的第一个字母j在哪个位置,n*21求出。

f[S]表示S的所有全排列子序列出现的最后末尾位置,枚举最后一个字母转移。21*2^21

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
using namespace std; int T,n,m,k,t,g[][],f[<<];
char a[]; int main(){
freopen("bzoj4416.in","r",stdin);
freopen("bzoj4416.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d%s",&n,a+); m=strlen(a+);
if (n>){ puts("NO"); continue; }
rep(j,,n-) g[m][j]=g[m+][j]=m+;
for(int i=m; i; i--){
rep(j,,n-) g[i-][j]=g[i][j];
g[i-][a[i]-'a']=i;
}
rep(i,,(<<n)-){
int res=;
for(int j=i; j; j-=j&-j)
k=__builtin_ctz(j),res=max(res,g[f[i^(<<k)]][k]);//ctz统计末尾0的个数
f[i]=res;
}
puts(f[(<<n)-]>m ? "NO" : "YES");
}
return ;
}

最新文章

  1. iOS真机测试碰到错误linker command failed with exit code 1 (use -v to see invocation)
  2. Centos6.5 Zabbix3 server端安装(一)
  3. XML数据 JSON数据 LitJSON 数据 的编写和解析 小结
  4. asp.net mvc 依赖缓存启动项配置
  5. mysql常用命令(2)
  6. Tips3:通过Layer下拉菜单来锁定游戏物体和控制物体的可视化
  7. 一、Linux目录结构
  8. android之硬件访问服务框架
  9. STL简介
  10. jquery动画总结
  11. NOIP2014-普及组复赛-第四题-子矩阵
  12. Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率
  13. CountDownLatch与CyclicBarrier
  14. HighCharts之2D颜色阶梯饼图
  15. Sql case when 示例
  16. Liferay7 BPM门户开发之9: 流程表单数据动态映射体系
  17. Rstudio+mysql写入中文表
  18. phpstudy + dvws
  19. linux常用文本编缉命令(strings/sed/awk/cut)
  20. Cloth

热门文章

  1. js和php的时间戳和时间的转化
  2. dataTables.js 响应式/package-lock.json 作用/eclipse 目录和工作区建立连接/navcat 导出数据库/vscode 快速进入方法
  3. linux内核数据结构之链表【转】
  4. 浅析linux内核中timer定时器的生成和sofirq软中断调用流程(转自http://blog.chinaunix.net/uid-20564848-id-73480.html)
  5. ELK&amp;ElasticSearch5.1基础概念及配置文件详解【转】
  6. 94.Binary Tree Inorder Traversal---二叉树中序非递归遍历
  7. WPF之模拟打开或关闭Windows功能
  8. caffe Python API 之上卷积层(Deconvolution)
  9. centos 下单独安装mysql
  10. java基础8 构造函数和构造代码块