Simple String Problem FZU - 2218

标签: FZU 状态压缩
25人阅读 评论(0) 收藏 举报
分类:

点击打开链接

字符种类很少 所以可以利用状压 把每个子串都变做一个数 然后记录每个数(子串)对应的最大长度 然后从低状态一路更新到高状态 这样就相当于一个基于状态高低的前缀和 再然后就是枚举每一种状态 对全一状态也就是最高状态进行异或 这样就得到了每一位都与当前枚举状态不同的最高状态 又因为之前已经求得一个状态前缀和 所以直接相乘即可

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long

int num[100010],pre[100010];
char ch[2010];
int n,m,tot,k;

int main()
{
    int t,i,j,val,ans;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%s",&n,&m,ch);
        tot=(1<<m);
        memset(num,0,sizeof(num));
        for(i=0;i<n;i++)
        {
            val=0;
            for(j=i;j<n;j++)
            {
                val|=(1<<(ch[j]-'a'));
                num[val]=max(num[val],j-i+1);
            }
        }
        memcpy(pre,num,sizeof(num));
        for(i=0;i<tot;i++)
        {
            for(j=0;j<m;j++)
            {
                if(i&(1<<j))
                {
                    num[i]=max(num[i],num[(1<<j)^i]);
                }
            }
        }
        ans=0;
        for(i=0;i<tot;i++)
        {
            ans=max(ans,num[(tot-1)^i]*pre[i]);
        }
        printf("%d\n",ans);
    }
    return 0;
}

查看评论

String类

-
  • 1970年01月01日 08:00

Simple String Problem FZU - 2218(状压DP)

G - Simple String Problem ...
  • Sirius_han
  • Sirius_han
  • 2018-04-15 19:07:50
  • 5

Simple String Problem FZU - 2218 (状压dp)

Simple String Problem FZU - 2218 Rec...
  • codeswarrior
  • codeswarrior
  • 2018-04-15 19:02:53
  • 33

状压dp fzu2218 Simple String Problem

传送门:点击打开链接 题意:一个长为n(n 求两段子串A和B,A和B中间没有共用的字母类型,求len(A)*len(B)的最大值 思路:当时想到了3种方法,感觉各有优势,都来BB一下。 ...
  • qwb492859377
  • qwb492859377
  • 2015-12-28 12:48:03
  • 955

第六届福建省大学生程序设计竞赛——G Simple String Problem(状态压缩dp)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2218题目大意:解题思路:PS: 因为这道题目自己当时没有做出来,是下来以为巨巨给的题解,他真的有一万种方法AC...
  • Yick_Liao
  • Yick_Liao
  • 2015-12-29 09:27:43
  • 788

FZU 2218 Simple String Problem(状态压缩DP)

FZU 2218 Simple String Problem(状态压缩DP) 组队赛时遇到的一道题,最后几分钟才做出来。说实话我做的时候也完全没有底,没想到竟然能一发AC...
  • lincifer
  • lincifer
  • 2016-03-20 23:35:55
  • 424

fzu2218 Simple String Problem

Accept: 2    Submit: 16 Time Limit: 2000 mSec    Memory Limit : 32768 KB  Problem Description ...
  • Kirito_Acmer
  • Kirito_Acmer
  • 2015-12-28 11:09:19
  • 565

FZU 2218 Simple String Problem (状压DP)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2218 Problem 2218 Simple String Problem Accept: 192 ...
  • qq_34287501
  • qq_34287501
  • 2017-04-13 15:44:25
  • 322

FZU 2218 Simple String Problem

题目大意:   给你n个字符,这n个字符是由字母表前k个字符组成的。问两个区间, 这两个区间所含字符种类不同,输出两个区间最大乘积。 令b[ sta ]为sta所能取的最大值,dp[ sta ]...
  • Mtrix
  • Mtrix
  • 2016-04-19 21:28:44
  • 197

FZU - 2218 Simple String Problem

状态压缩dp
  • sinat_29278271
  • sinat_29278271
  • 2016-03-19 02:09:17
  • 154
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 1877
    排名: 2万+
    文章分类
    友情链接
    http://www.cnblogs.com/yzm10