bzoj4416 阶乘字符串 子集dp
膜拜了Claris大。
首先可以得到当n>21时无解。
令g[i][c]表示i之后第一个为c的字母的下标。
令i为用二进制表示的已经选取的字母的集合,令f[i]表示选取的字母的集合的全排列都出现的最短的原串的前缀的长度。然后枚举字母转移。显然当且仅当f[2^n-1]<=字符串长度时有解。
AC代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int n,len,bin[25],f[2500005],g[1005][26]; char ch[1005];
int main(){int cas,i,k; scanf("%d",&cas);bin[0]=1; for (i=1; i<=21; i++) bin[i]=bin[i-1]<<1;while (cas--){scanf("%d%s",&n,ch+1); len=strlen(ch+1);if (n>21){ puts("NO"); continue; }for (i=0; i<n; i++) g[len][i]=g[len+1][i]=len+1;for (i=len; i; i--){for (k=0; k<n; k++) g[i-1][k]=g[i][k];g[i-1][ch[i]-'a']=i;}for (i=1; i<bin[n]; i++)for (f[i]=k=0; bin[k]<=i; k++)if (i&bin[k]) f[i]=max(f[i],g[f[i^bin[k]]][k]);puts((f[bin[n]-1]<=len)?"YES":"NO");}return 0;
}
by lych
2016.3.7
bzoj4416 阶乘字符串 子集dp相关推荐
- [BZOJ4416][Shoi2013]阶乘字符串 状态压缩dp
诶一直感觉这个数字特别大的时候会无解 然而一直没有把这个数算出来,觉得可能是大于一个数无解小于一个数暴力 然而看题解发现这个数字是2121 正解先特判nn是否大于2121,若大于puts no 否则进 ...
- 【BZOJ4416】阶乘字符串(SHOI2013)-状压DP
测试地址:阶乘字符串 做法:本题需要用到状压DP. 首先,根据证明(直觉),满足条件的字符串的最小长度仅仅比n2n2n^2小一点点,因此当n>21n>21n>21时,直接输出NO即可 ...
- BZOJ 4416: [Shoi2013]阶乘字符串【状压DP
--不那么裸的状压dp-- 当字符集大于21的时候直接输出不满足--原因啊----大了就跑不过了 --大概就是不能得到嘛[大佬们并没有讨论出结果在下只是听的题解[x 用f[i][j]表示第i个字符前 ...
- BZOJ4416: [Shoi2013]阶乘字符串
BZOJ4416: [Shoi2013]阶乘字符串 状压dp 题解: 据说n>21n>21无解? 据说合法的串最短是O(n2)O(n^2)级别的? 不知道... 对于n<=21n的情 ...
- [JZOJ3293] 【SHTSC2013】阶乘字符串
题目 题目大意 给你一个字符串,判断这个字符串是否为"阶乘字符串". 就是子序列包含字符集的全排列的字符串. n≤26n\leq 26n≤26 ∣S∣≤450|S|\leq 450 ...
- loj 300 [CTSC2017]吉夫特 【Lucas定理 + 子集dp】
题目链接 loj300 题解 orz litble 膜完题解后,突然有一个简单的想法: 考虑到\(2\)是质数,考虑Lucas定理: \[{n \choose m} = \prod_{i = 1} { ...
- BZOJ 2560(子集DP+容斥原理)
2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 757 Solved: 497 [Submit][Status][Discuss ...
- BZOJ4416 [Shoi2013]阶乘字符串
鬼畜题啊-- 上来看错题,看成子串,n>=6直接无解,n<=5直接暴力,然后狂WA,发现看错题了 然后就跪了,只好上网找题解,然后看到了一个非常厉害的结论:当n>21的时候无解! 好 ...
- Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse 子集dp
传送门 文章目录 题意: 思路: 题意: 思路: 之前做过类似的题,翻转一个字串相当于将任意两个不相交的串连在一起.再一看字符集≤20\le20≤20,那就是铁子集dpdpdp了. 定义f[i]f[i ...
最新文章
- uniapp商城_【程序源代码】商城小程序
- 提升销售人员的信息处理能力
- 使用PYTORCH复现ALEXNET实现MNIST手写数字识别
- 粒子群算法组卷_粒子群(PSO)算法概念及代码实现
- 简单的C语言程序合集
- cuda的shared momery
- C++ opengl 线段的绘制
- java github关联登录_没错,用三方Github做授权登录就是这么简单!(OAuth2.0实战)...
- Report machine 单据报表设计
- [网络通信协议]websocket
- 《Flash MX培训教程》前言
- java adt eclipse_在eclipse中添加android ADT
- 来了!微信小程序五款最受欢迎的UI框架解读
- 离散小波变换wavedec matlab,matlab小波变换指令及其功能介绍.docx
- sensor gyro_3d not found
- 记录一次获取车载摄像头数量为0同时打开摄像头黑屏的问题分析(基于Android M)
- Android安全之使用root权限绕过检测机制,强行自动允许应用的悬浮窗/应用后台弹出界面等权限
- 威海之恋 mv和歌词
- E20170513-hm
- 国外程序员推荐:每个程序员都应读的书