原题地址:
题意:
给你一个串和两个整数n和k,n表示串的长度,k表示串只有前k个小写字母,问你两个不含相同元素的连续子串的长度的最大乘积。
思路:
状态压缩DP最多16位,第i位的状态表示第i位字母是否存在,
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<cstring>
#include<cmath>
#define eps 1e-12
using namespace std;
typedef long long ll;
const ll mo = 1000000007, N = 2*1e3+10;
char s[N];
int dp[(1<<16)+100];
int main()
{  int t;  cin>>t;  while(t--)  {  int n, m;  scanf("%d%d", &n, &m);  scanf("%s", s);  memset(dp, 0, sizeof(dp));  for(int i = 0; i<n; i++)  {  int t = 0;  for(int j = i; j<n; j++)  {  t |= 1<<(s[j] - 'a');  dp[t] = max(dp[t], j - i + 1);  }  }  int s = 1<<m;  for(int i = 0; i<s; i++)  {  for(int j = 0; j<m; j++)  {  if((1<<j) & i)  dp[i] = max(dp[i], dp[i^(1<<j)]);  }  }  int ans = 0;  for(int i = 0; i<s; i++)  {  ans = max(ans, dp[i]*dp[(s-1)^i]);  }  cout<<ans<<endl;  }  return 0;
}

  

转载于:https://www.cnblogs.com/luowentao/p/8997048.html

FZU-2218 Simple String Problem(状态压缩DP)相关推荐

  1. FZU - 2218 Simple String Problem(状压dp)

    题目链接:点击查看 题目大意:给出一个长度为n,含有k个不同字母的字符串,我们的任务是从中挑选出两段连续的子串,要求其长度的乘积最大,还有一个限制条件是,这两个子串不能互相包含相同的字母 题目分析:因 ...

  2. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

    目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...

  3. hdu1074 状态压缩dp+记录方案

    题意:       给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案. 思路:       状态压缩dp,记录方案数的地方 ...

  4. 《算法竞赛进阶指南》打卡-基本算法-AcWing 91. 最短Hamilton路径:位运算、状态压缩dp、dp

    文章目录 题目解答 题目链接 题目解答 分析: 状态压缩dp是用二进制数来表示状态. 数据范围n = 20, 那么状态总量就是2202^{20}220个状态. 可以按照以下思路去思考: 哪些点被用过 ...

  5. 状态压缩dp入门 第一题 POJ 3254 Corn Fields

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6460   Accepted: 3436 Descr ...

  6. jzoj1768,P2704,POJ1185-[NOI2001]炮兵阵地【状态压缩dp】

    正题 POJ链接:http://poj.org/problem?id=1185 jzoj链接:https://jzoj.net/senior/#main/show/1768 洛谷评测记录:https: ...

  7. Victor and World(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 Victor and World Time Limit: 4000/2000 MS (Java/ ...

  8. HDU4628+状态压缩DP

    1 /* 2 状态压缩DP 3 dp[ i ]:达到i状态的最小step. 4 题意:每次可以去掉一个回文串,求最少几步能取完. 5 */ 6 #include<stdio.h> 7 #i ...

  9. HDU4026 Unlock the Cell Phone [状态压缩DP]

    一开始看范围特别小就写搜索了...结果自己随便出了个4*4就过不了了.. 其实就是状态压缩DP,求哈密顿回路要多少条,只是要注意判断两点是否可以划线就可以了. #include <stdio.h ...

最新文章

  1. SpringBoot 部署 Jar 文件,瘦身优化指南 !
  2. 清除messages
  3. 60 Celery队列
  4. CentOS 6.5 LVM磁盘管理学习笔记
  5. 【网易云信招聘啦】216位攻城狮,呼唤7个好基友
  6. android http通过post请求发送一个xml
  7. Spring Set注入简化写法1
  8. 新浪微博爬虫设计(Python版)
  9. css border渐变_css边框渐变
  10. list 转set_MapStruct高级用法:List和String互转
  11. 大数据之-Hadoop3.x_MapReduce_数据压缩---大数据之hadoop3.x工作笔记0138
  12. python安装email模块,python 3.4.0电子邮件包安装:ImportError:没有名为'cStringIO'的模块...
  13. jdk12连接mysql_使用基于JDK12版本的JDBC读取数据库中的数据在网页(jsp)表示出来...
  14. mysql数据库 安装后 闪_MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作...
  15. python采集人脸_python获取人脸的代码分享
  16. layer:子父之间的数据传递
  17. Python selenium 实现大麦网自动购票过程
  18. 3款常见的网站文章采集工具推荐(2019最新)
  19. 加入Web前端学习还有市场吗?自己是否适合学习前端
  20. 日出日落时间和年均光照时长计算 java

热门文章

  1. IAR J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?
  2. CTFshow 命令执行 web121
  3. 关于浮点数的误差理解
  4. poj 3045 Cow Acrobats (贪心!!不是二分,)
  5. SSD算法 模板 匹配
  6. php与mysql同步_php实现mysql同步的实现方法
  7. KMeans++算法理论和实现
  8. OpenMP在Windows下用VS使用
  9. 快速乘法(防止数过大相乘超出long long)
  10. android如何使用xml资源文件,Android-使用xml文件资源定义菜单