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;
}
相关推荐
闻缺陷则喜何志丹10 分钟前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
charlie11451419121 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
Lenyiin28 分钟前
01.02、判定是否互为字符重排
算法·leetcode
小林熬夜学编程32 分钟前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
倔强的石头10643 分钟前
【C++指南】类和对象(九):内部类
开发语言·c++
鸽鸽程序猿43 分钟前
【算法】【优选算法】宽搜(BFS)中队列的使用
算法·宽度优先·队列
Jackey_Song_Odd44 分钟前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
Watermelo6171 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
乐之者v1 小时前
leetCode43.字符串相乘
java·数据结构·算法
A懿轩A2 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组