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;
}
相关推荐
basketball6163 分钟前
C++ 高级编程:1. 多线程基本操作
开发语言·c++
十五年专注C++开发4 分钟前
std::vector<T>到QVector<T>的数据复制方案
c++·vector·iterator模式·qvector
HZ·湘怡1 小时前
二叉树 2 堆
算法
wabs6668 小时前
关于贪心算法的思考
算法·贪心算法
社交怪人8 小时前
【判断大小】信息学奥赛一本通C语言解法(题号1043)
算法
Snasph9 小时前
GNU Make 用户手册(中文版)
服务器·算法·gnu
江澎涌9 小时前
拆解与 AI 的一次对话
人工智能·算法·程序员
sheeta19989 小时前
LeetCode 每日一题笔记 日期:2026.06.02 题目:3635. 最早完成陆地和水上游乐设施的时间 II
笔记·算法·leetcode
Lsk_Smion10 小时前
力扣实训 _ [102].层序遍历--前序--后续_递归与非递归的实现
数据结构·算法·leetcode
Lsk_Smion11 小时前
力扣实训 _ [25].K个一组链表
数据结构·链表