[BZOJ4416][SHOI2013]阶乘字符串(子集DP)
2024-08-28 16:10:49
怎么也没想到是子集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 ;
}
最新文章
- iOS真机测试碰到错误linker command failed with exit code 1 (use -v to see invocation)
- Centos6.5 Zabbix3 server端安装(一)
- XML数据 JSON数据 LitJSON 数据 的编写和解析 小结
- asp.net mvc 依赖缓存启动项配置
- mysql常用命令(2)
- Tips3:通过Layer下拉菜单来锁定游戏物体和控制物体的可视化
- 一、Linux目录结构
- android之硬件访问服务框架
- STL简介
- jquery动画总结
- NOIP2014-普及组复赛-第四题-子矩阵
- Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率
- CountDownLatch与CyclicBarrier
- HighCharts之2D颜色阶梯饼图
- Sql case when 示例
- Liferay7 BPM门户开发之9: 流程表单数据动态映射体系
- Rstudio+mysql写入中文表
- phpstudy + dvws
- linux常用文本编缉命令(strings/sed/awk/cut)
- Cloth
热门文章
- js和php的时间戳和时间的转化
- dataTables.js 响应式/package-lock.json 作用/eclipse 目录和工作区建立连接/navcat 导出数据库/vscode 快速进入方法
- linux内核数据结构之链表【转】
- 浅析linux内核中timer定时器的生成和sofirq软中断调用流程(转自http://blog.chinaunix.net/uid-20564848-id-73480.html)
- ELK&;ElasticSearch5.1基础概念及配置文件详解【转】
- 94.Binary Tree Inorder Traversal---二叉树中序非递归遍历
- WPF之模拟打开或关闭Windows功能
- caffe Python API 之上卷积层(Deconvolution)
- centos 下单独安装mysql
- java基础8 构造函数和构造代码块