P4302 [SCOI2003] 字符串折叠

[题目通道]([SCOI2003] 字符串折叠 - 洛谷)

cpp 复制代码
#include <bits/stdc++.h>
#define int long long 
#define fast register int 

using namespace std;

char s[110];

int n,m[110],f[110][110];

bool check(char s[],int n,int len){
    for (fast i=len;i<n;i++){
        if(s[i]!=s[i%len])return false;
    }
    return true;
}

signed main(){
    scanf("%s",s);
    n=strlen(s);
    for (fast i=1;i<=9;i++){
    	m[i]=1;
	}
    for (fast i=10;i<=99;i++){
    	m[i]=2;
	}
    m[100]=3;
    memset(f,0x3f,sizeof(f));
    for (fast i=0;i<n;i++){
		f[i][i]=1;
	}
    for (fast l=2;l<=n;l++){
        for (fast i=0,j=i+l-1;j<n;i++,j++){
            for (fast k=i;k<j;k++){
				f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
			}
            for (fast k=i;k<j;k++){
                int len=k-i+1;
                if (l%len!=0) {
                	continue;
				}
                if (check(s+i,l,len)){
                	f[i][j]=min(f[i][j],f[i][k]+2+m[l/len]);
				}
            }
        }
    }
    printf("%d",f[0][n-1]);
    return 0;
}
相关推荐
一只码代码的章鱼21 分钟前
数据结构与算法-搜索-剪枝
算法·深度优先·剪枝
roman_日积跬步-终至千里1 小时前
【后端基础】布隆过滤器原理
算法·哈希算法
若兰幽竹1 小时前
【机器学习】多元线性回归算法和正规方程解求解
算法·机器学习·线性回归
澄澈天空1 小时前
C++ MFC添加RichEditControl控件后,程序启动失败
c++·mfc
鱼力舟2 小时前
【hot100】240搜索二维矩阵
算法
Lzc7742 小时前
C++初阶——简单实现vector
c++·简单实现vector
一个小白13 小时前
C++——list模拟实现
开发语言·c++
liuyuzhongcc3 小时前
List 接口中的 sort 和 forEach 方法
java·数据结构·python·list
北_鱼3 小时前
支持向量机(SVM):算法讲解与原理推导
算法·机器学习·支持向量机
程序员老舅3 小时前
C++ Qt项目教程:WebServer网络测试工具
c++·qt·测试工具·webserver·qt项目·qt项目实战