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;
}
相关推荐
Tairitsu_H2 小时前
[C++] 拷贝构造还是赋值重载?类默认成员函数细节详解
开发语言·c++·类和对象
Logic1013 小时前
C语言/数据结构贪心算法题解:买卖股票的最佳时机——一次交易最大利润(O(n)时间O(1)空间)
c语言·数据结构·贪心算法·数组·时间复杂度·算法题·股票交易
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
ctlover3 小时前
数据结构:树
数据结构·python
GreenTea3 小时前
发布 3 天登顶 HN:不生成一个字的模型 Jev,我把它的源码和黑料都扒了一遍
前端·后端·算法
汉克老师3 小时前
GESP2026年9月认证C++四级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
geats人山人海4 小时前
现代c++第二章 字符串
c++
庖丁解牛4 小时前
无穷小不是一个“神秘小数”,而是一场奔向 0 的过程
算法
idealzouhu4 小时前
现代 CMake 依赖管理详解:从构建树、Target 封装到 find_package 工作原理
c++·cmake
ZPC82104 小时前
YOLO26 识别串番茄果梗
人工智能·深度学习·算法·机器学习