zoukankan      html  css  js  c++  java
  • BZOJ 1068 [SCOI2007]压缩

    题目链接

    膜拜黄学长

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    char s[100];
    int f[60][60][2];
    bool vis[60][60][2];
    bool judge(int l, int r) {
    	int len = r - l + 1;
    	if(len & 1) return false;
    	for(int i = l; i <= (l + r) / 2; i++)
    	  if(s[i] != s[i + len / 2]) return false;
    	return true;
    }
    int DP(int l, int r, bool k) {
    	if(l == r) return 1;
    	int & res = f[l][r][k];
    	if(vis[l][r][k]) return res;
    	vis[l][r][k] = true;
    	res = r - l + 1;
    	if(k == 1) {
    		for(int i = l; i < r; i++)
    		  res = min(res, DP(l, i, true) + DP(i + 1, r, true) + 1);
    	}
    	for(int i = l; i < r; i++)
    	  res = min(res, DP(l, i, k) + r - i);
    	if(judge(l, r)) res = min(res, DP(l, (l + r) / 2, false) + 1);
    	return res;
    }
    int main() {
    	scanf("%s", s);
    	int n = strlen(s);
    	printf("%d
    ", DP(0, n - 1, 1));
    	return 0;
    }
    
    
  • 相关阅读:
    CF1091E
    jzoj5703
    CF1109F
    杂题
    CF1194F
    杂题
    个人作业1-数组(二维数组)
    第三周-学习进度条
    构建之法阅读笔记02
    个人作业1-数组(续1)
  • 原文地址:https://www.cnblogs.com/ljzalc1022/p/9064738.html
Copyright © 2011-2022 走看看