设f[i][j][k]为将i~j的字符最终合并成k的答案。转移时只考虑最后一个字符是由哪段后缀合成的。如果最后合成为一个字符特殊转移一下。

  复杂度看起来是O(n32k),实际常数极小达到O(玄学)。

  upd:突然发现根本没在bzoj上交。bzoj的数据输入中没有空格。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 310
int n,m,a[N],c[N],w[N],len[N];
long long f[N][N][N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj4565.in","r",stdin);
freopen("bzoj4565.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),m=read();
memset(f,,sizeof(f));
for (int i=;i<=n;i++) a[i]=read(),f[i][i][a[i]]=,len[i]=(i-)%(m-)+;
for (int i=;i<(<<m);i++) c[i]=read(),w[i]=read();
for (int k=;k<=n;k++)
for (int i=;i<=n-k+;i++)
{
int j=i+k-;
for (int d=j-;d>=i;d-=m-)
if (len[k]!=)
for (int v=;v<(<<len[k]);v++)
f[i][j][v]=max(f[i][j][v],f[i][d][v>>]+f[d+][j][v&]);
else
for (int u=;u<(<<m-);u++)
f[i][j][c[u<<]]=max(f[i][j][c[u<<]],f[i][d][u]+f[d+][j][]+w[u<<]),
f[i][j][c[u<<|]]=max(f[i][j][c[u<<|]],f[i][d][u]+f[d+][j][]+w[u<<|]);
}
for (int i=;i<(<<m);i++) f[][n][]=max(f[][n][],f[][n][i]);
cout<<f[][n][];
return ;
}

最新文章

  1. 用SQL语句获得一个存储过程返回的表
  2. Monkey基础
  3. android广播接收器BroadcastReceiver
  4. 请注意designer中的NAME field
  5. 软谋在线教育诚招php,java,.net,设计师讲师(可兼职)
  6. makeKeyAndVisible的功能
  7. Android原生APP内分享
  8. javascript 手机号码正则表达式验证函数
  9. MongoDB增 删 改 查
  10. DOM2练习
  11. python学习之路day1
  12. luoguP2526_[SHOI2001]小狗散步_二分图匹配
  13. java之旅_高级教程_java泛型
  14. 关于ios下字体描边的一个细节
  15. springboot-19-整合dubbox
  16. C# 数组中的 indexOf 方法
  17. ZH奶酪:PHP遍历目录/文件的3种方法
  18. ibtais中把clob数据类型转换成string并展示到前台
  19. ethtool命令详解
  20. python -- 简单配置发送邮件功能

热门文章

  1. Awesome Django
  2. MongoDB之我是怎么成为Primary节点的
  3. 全局脚手架了解一下【fle-cli】
  4. connect by 语句
  5. javaweb(四)——Http协议(请求头,响应头详解)
  6. hdu1176免费馅饼(动态规划,数塔)
  7. Postman 高级用法指南
  8. js写的数码时钟,在“最小化”浏览器 或者 “切换网页”是动画效果好像不对
  9. iscroll手册
  10. Python—元组(戴上了枷锁的列表)