传送门

区间dp,记\(dp(l,r,t)\)表示区间\((l,r)\),\(t\)表示这个区间中能不能放\(M\)。如果可以,枚举中间哪里放\(M\)来压缩。也可以不压缩,后面直接跟上去。如果左右重复的,尝试压缩一下,那么循环节里是不能放的

//minamoto
#include<bits/stdc++.h>
using namespace std;
const int N=55,inf=0x3f3f3f3f;
char s[N];int f[N][N][2],n;
bool same(int L,int R){
if((R-L+1)&1)return false;int M=(R-L+1)>>1;
for(int i=L;i<L+M;++i)if(s[i]!=s[i+M])return false;return true;
}
int solve(int L,int R,bool is){
if(L==R)return 1;if(f[L][R][is])return f[L][R][is];int res=inf;
if(is)for(int i=L;i<R;++i)res=min(res,1+solve(L,i,1)+solve(i+1,R,1));
for(int i=L;i<R;++i)res=min(res,solve(L,i,is)+R-i);
if(same(L,R))res=min(res,solve(L,(L+R)>>1,0)+1);return f[L][R][is]=res;
}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%s",s+1);n=strlen(s+1);
printf("%d\n",solve(1,n,1));return 0;
}

最新文章

  1. mysql密码重置
  2. OAuth2授权原理
  3. Viking Village维京村落demo中的粒子距离消隐
  4. select、poll、epoll程序实例
  5. chrome 下载插件包及离线安装
  6. Java Eclipse常规设置
  7. smarty的ASSIGN()函数
  8. 【机器学习】--FP-groupth算法从初始到应用
  9. Sharepoint 2016 配置FBA(四)添加用户到Membership数据库
  10. STS中springmvc.xml配置文件
  11. 【Java深入研究】10、红黑树
  12. php 图形用户界面GUI 开发
  13. PC/FORTH 变量|常数|数组
  14. MAC book 无法删除普通用户的解决办法
  15. Swift5 语言指南(十) 枚举
  16. c++中string类对象和字符数组之间的相互转换
  17. 基本数据类型int,bool,str
  18. 使用netfilter_queue改包笔记
  19. golang基础类型
  20. MySQL 逻辑备份工具

热门文章

  1. IntelliJ IDEA 13.1.1版本偶然的错误
  2. 289. Game of Live
  3. Help Jimmy DP
  4. sql将日期按照年月分组并统计数量
  5. Ubuntu 16.04创建Swap分区或增加Swap分区容量(转)
  6. JSP操作
  7. JDBC的数据类型
  8. Ionic3 填坑记录 - java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
  9. 合并链表 —— 剑指Offer
  10. 链表倒置,这个还是考验仔细程度,第一遍还没做对 —— 剑指Offer