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;
}
相关推荐
The_Ticker4 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
程序猿阿伟4 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
Lenyiin37 分钟前
02.06、回文链表
数据结构·leetcode·链表
爪哇学长40 分钟前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
爱摸鱼的孔乙己42 分钟前
【数据结构】链表(leetcode)
c语言·数据结构·c++·链表·csdn
Dola_Pan44 分钟前
C语言:数组转换指针的时机
c语言·开发语言·算法
繁依Fanyi1 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
烦躁的大鼻嘎1 小时前
模拟算法实例讲解:从理论到实践的编程之旅
数据结构·c++·算法·leetcode
IU宝1 小时前
C/C++内存管理
java·c语言·c++
fhvyxyci1 小时前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string