【洛谷 P4302】 [SCOI2003]字符串折叠(DP)
题目链接
简单区间dp
令\(f[i][j]\)表示\([i,j]\)的最短长度
先枚举区间,然后在区间中枚举长度\(k\),看这个区间能不能折叠成几个长度为\(k\)的,如果能就更新答案。
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char s[110];
int f[110][110], n, num[110];
string p[110][110];
inline int check(int a, int b, int c){
int d = b - a + 1;
for(int i = c; i < d; ++i)
if(s[a + i] != s[a + (i % c)])
return 0;
return 1;
}
int main(){
while(scanf("%s", s + 1) != EOF){
n = strlen(s + 1);
for(int i = 1; i <= 9; ++i) num[i] = 1;
for(int i = 10; i <= 99; ++i) num[i] = 2;
num[100] = 3;
for(int i = 1; i <= n; ++i)
f[i][i] = 1;
for(int l = 2; l <= n; ++l)
for(int i = 1; i + l - 1 <= n; ++i){
int j = i + l - 1;
f[i][j] = l;
for(int k = 1; k < l; ++k){
f[i][j] = min(f[i][j], f[i][i + k - 1] + f[i + k][j]);
if(l % k == 0)
if(check(i, j, k))
f[i][j] = min(f[i][j], 2 + num[l / k] + f[i][i + k - 1]);
}
}
printf("%d\n", f[1][n]);
}
return 0;
}
【洛谷 P4302】 [SCOI2003]字符串折叠(DP)的更多相关文章
- 洛谷P4302 [SCOI2003]字符串折叠(区间dp)
题意 题目链接 Sol 裸的区间dp. 转移的时候枚举一下断点.然后判断一下区间内的字符串是否循环即可 `cpp #include<bits/stdc++.h> #define Pair ...
- 洛谷P4302 [SCOI]字符串折叠 [字符串,区间DP]
题目传送门 字符串折叠 题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS…S(X个S). 如 ...
- P4302 [SCOI2003]字符串折叠
题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS…S(X个S). 如果A = A’, B = ...
- luogu P4302 [SCOI2003]字符串折叠
题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS-S(X个S). 如果A = A', B = ...
- [SCOI2003]字符串折叠(区间dp)
P4302 [SCOI2003]字符串折叠 题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS ...
- BZOJ 1090: [SCOI2003]字符串折叠 区间DP
1090: [SCOI2003]字符串折叠 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- 【BZOJ1090】[SCOI2003]字符串折叠(动态规划)
[BZOJ1090][SCOI2003]字符串折叠(动态规划) 题面 BZOJ 洛谷 题解 区间\(dp\).设\(f[i][j]\)表示压缩\([i,j]\)区间的最小长度.显然可以枚举端点转移.再 ...
- BZOJ1090: [SCOI2003]字符串折叠
区间dp. 一种是分段dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); 一种是这一段可以缩写dp[i][j]=min(dp[i][j],dp[i][l]+2+ca ...
- 【bzoj1090】 [SCOI2003]字符串折叠
[bzoj1090] [SCOI2003]字符串折叠 2014年3月9日3,1140 Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S S 2. X(S)是X ...
- 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)
洛谷题面传送门 一道 dp 套 dp 的 immortal tea 首先考虑如何判断一套牌是否已经胡牌了,考虑 \(dp\).我们考虑将所有牌按权值大小从大到小排成一列,那我们设 \(dp_ ...
随机推荐
- 2019_软工实践_Beta(2/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ?按照时间进度的安排进行相应的检查 展示GitHub当日代码/文档签入记 ...
- @MatrixVariable的使用
@MatrixVariable的使用 博客分类: J2EE 在Spring3.2 后,一个@MatrixVariable出现了,这个注解的出现拓展了URL请求地址的功能. Matrix Varia ...
- Excel 如何查找 问号 “?” 、星号“*” 、 “~”号
若需要查找问号“?”,则在查找内容文本框中输入“~?”.“?”为通配符,代替单个任意字符,如果直接查找,会找到包含数据的所有单元格. 若需要查找星号“*”,则在查找内容文本框中输入“~*”.“*”为通 ...
- [LeetCode] 384. Shuffle an Array 数组洗牌
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...
- bugclose使用—bug管理工具
1.前言 bugclose管理的是BUG,而不仅仅是bug.BUG概念是bugclose的创造,代表团队工作的对象,包括缺陷,任务和需求. 2.bugclose访问地址 访问地址:https://ww ...
- git删除远程.idea目录
git删除远程.idea目录 1. 登录 Administrator@USER-20180708AB MINGW32 / (master) $ git config --global user.nam ...
- Python微服务实践-集成Consul配置中心
A litmus test for whether an app has all config correctly factored out of the code is whether the co ...
- android基础---->ListView的使用
简单说明 ListView在android程序中比较常用,在此做一下简单的总结 内容:自定义ListView, 自定义Adapter,ListView滚动事件的应用! 项目结构如下图
- Oracle Spatial分区应用研究之一:分区与分表查询性能对比
1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...
- docker+k8s基础篇一
Docker+K8s基础篇(一) docker的介绍 A:为什么是docker B:k8s介绍 docker的使用 A:docker的安装 B:docker的常用命令 C:docker容器的启动和操作 ...