FZU2218 Simple String Problem(状压DP)
首先,定义S,表示前k个字符出现的集合,用二进制来压缩。
接下来,推出dp1[S],表示集合为S的子串的最长长度。
然后根据dp1[S]再推出dp2[S],表示集合为S或S的子集的子串的最长长度。
最后答案就是max(dp2[S]*dp2[补(S)])
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int d[1<<16]; 6 int main(){ 7 int t,n,k; 8 char str[2222]; 9 scanf("%d",&t); 10 while(t--){ 11 scanf("%d%d%s",&n,&k,str); 12 memset(d,0,sizeof(d)); 13 for(int i=0; i<n; ++i){ 14 int s=0; 15 for(int j=i; j<n; ++j){ 16 s|=1<<str[j]-'a'; 17 d[s]=max(d[s],j-i+1); 18 } 19 } 20 for(int i=0; i<(1<<k); ++i){ 21 for(int j=0; j<k ;++j){ 22 if((i>>j)&1) d[i]=max(d[i],d[i&(~(1<<j))]); 23 } 24 } 25 int res=0; 26 for(int i=0; i<(1<<k); ++i){ 27 res=max(res,d[i]*d[(~i)&((1<<k)-1)]); 28 } 29 printf("%d\n",res); 30 } 31 return 0; 32 }
转载于:https://www.cnblogs.com/WABoss/p/5092266.html
FZU2218 Simple String Problem(状压DP)相关推荐
- FZU - 2218 Simple String Problem(状压dp)
题目链接:点击查看 题目大意:给出一个长度为n,含有k个不同字母的字符串,我们的任务是从中挑选出两段连续的子串,要求其长度的乘积最大,还有一个限制条件是,这两个子串不能互相包含相同的字母 题目分析:因 ...
- FZU-2218 Simple String Problem(状态压缩DP)
原题地址: 题意: 给你一个串和两个整数n和k,n表示串的长度,k表示串只有前k个小写字母,问你两个不含相同元素的连续子串的长度的最大乘积. 思路: 状态压缩DP最多16位,第i位的状态表示第i位字母 ...
- CF11D A Simple Task(状压DP)
\(solution:\) 思路大家应该都懂: 状压DP:\(f[i][j]\),其中 \(i\) 这一维是需要状压的,用来记录19个节点每一个是否已经走过(走过为 \(1\) ,没走为 \(0\) ...
- CF11D-A Simple Task【状压dp】
正题 题目链接:https://www.luogu.com.cn/problem/CF11D 题目大意 给出nnn个点mmm条边的一张简单无向图,求它的简单环的个数. 1≤n≤191\leq n\le ...
- 【校内互测】Sunshine’s string(merge) (状压dp)
Sunshine's string(merge.cpp) [问题描述] 无聊的Sunshine大爷开始研究字符串.他找来了一个长度为n的01字符串,并制定了一些规则:每次可以将k个字符合并,得到一个新 ...
- 【思维题 状压dp】APC001F - XOR Tree
可能算是道中规中矩的套路题吧-- Time limit : 2sec / Memory limit : 256MB Problem Statement You are given a tree wit ...
- CodeForces - 1550E Stringforces(二分+状压dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,只包含前 kkk 个小写字母以及通配符 ???,现在可以将通配符替换成任意的前 kkk 个字母中的一个.设 f[i]f[i]f[i] 为 ...
- 【2019牛客暑期多校训练营(第五场)- E】independent set 1(最大独立集,状压dp)
题干: 链接:https://ac.nowcoder.com/acm/contest/885/E 来源:牛客网 Note: For C++ languages, the memory limit is ...
- Codeforces Beta Round #8 C. Looking for Order 状压dp
题目链接: http://codeforces.com/problemset/problem/8/C C. Looking for Order time limit per test:4 second ...
最新文章
- 计算机和人类“看”法不同,但这重要么?
- JavaScript多态
- POJ3322滚箱子游戏(不错)
- Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程...
- [JS-DOM]DOM概述
- 纯html5+css3能写出什么惊人效果?
- 鸿蒙手机播放音乐-第一集
- virt_to_page
- 齿轮刚度计算 matlab,数值积分求解齿轮刚度
- Centos7安装nxlog-2.9
- 8个免费查找文献的学术网站
- 余世伟视频笔记----如何塑造管理者的性格魅力领袖根性之诚信和担当
- 拥抱认知革命:区块链时代已至,临渊羡鱼不若自我革新
- 计算机中ram中文意思,ram是什么_ram是什么意思-太平洋IT百科
- 关于 PCB 多层板制程能力不得不说的那些事儿
- 震惊!AI居然轻松消除马赛克-文字增强,GitHub开源项目上线三天收获近7000星
- 【Linux】yum install cmake 报错,出现错误ImportError: No module named urlgrabber.grabber
- n阶魔方的构成方法C语言,穷举法打印n阶魔方矩阵
- Android微信页面缓存清理,安卓微信浏览器缓存如何清理
- Ubuntu16.04 rc.local不生效,启动过程中报“Failed to start /etc/rc.local Compatibility”错误
热门文章
- directshow-faac编码
- lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
- 《转》ReentrantLock实现原理深入探究
- 如何安装python3.8_Python安装1 —— Python3.8的安装
- 【IDEA】IDEA 设置 字体 可以滚轮 改变大小
- 【clickhouse】Application: DB::Exception: Duplicate interserver IO endpoint: DataPartsExchange
- 【Elasticsearch】Elasticsearch 7.3 的 offheap 原理
- 【Flink】Flink 报错 Hash join exceeded Too many duplicate keys
- 【Spring】Spring 自定义scope
- 【Hbase】HBase的shell命令总结