博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P3989 [SHOI2013]阶乘字符串 解题报告
阅读量:4473 次
发布时间:2019-06-08

本文共 742 字,大约阅读时间需要 2 分钟。

P3989 [SHOI2013]阶乘字符串

题目描述

给定一个由前\(n(\le 26)\)个小写字母组成的串\(S(|S|\le 450)\)。串\(S\)是阶乘字符串当且仅当前 \(n\) 个小写字母的全排列(共\(n!\)种)都作为的子序列(可以不连续)出现。

请判断出给定的串是否是阶乘字符串。


\(n> 21\)时无解,原因不明,留坑

剩下的状压一下就好了

\(dp_s\)表示集合\(s\)的所有排列出现的最前位置

枚举集合最后一个元素更新

\(yuu_{i,j}\)表示\(j\)\(i\)之后出现的最前位置


Code:

#include 
#include
int T,n,dp[1<<21],yuu[460][26];char s[460];int max(int x,int y){return x>y?x:y;}int main(){ scanf("%d",&T); while(T--) { scanf("%d%s",&n,s+1); if(n>21) { puts("NO"); continue; } int len=strlen(s+1); for(int i=0;i
>i&1) dp[s]=max(dp[s],yuu[dp[s^(1<

2019.2.14

转载于:https://www.cnblogs.com/butterflydew/p/10372686.html

你可能感兴趣的文章
redmine邮件配置
查看>>
sqlserver解密加密的存储过程(图解)
查看>>
红黑树
查看>>
1-3jmeter脚本录制(不常用)
查看>>
Java面向对象学习1——概念等
查看>>
redis集群搭建(简单简单)一台机器多redis
查看>>
【生活篇】微信运动刷步,高达98000!微信运动计步作弊教程!
查看>>
JAVA中获取工程路径的方法
查看>>
执行命令类
查看>>
hbase SingleColumnValueFilter 列不存在 无法过滤
查看>>
第一天
查看>>
linux ls -l 详解
查看>>
48、C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)
查看>>
Tomcat搭建&配置
查看>>
2015535俞昆《网络对抗技术》恶意代码分析
查看>>
四种以太网数据包详解
查看>>
hrbust-1545-基础数据结构——顺序表(2)
查看>>
连接各数据库的驱动程序
查看>>
spring简单入门案列,图例
查看>>
零碎问题汇总
查看>>