【洛谷 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_ ...
随机推荐
- CFD-Post中截取任意面的数据
源视频下载链接: https://pan.baidu.com/s/1i4PtgDR 密码: wsn5
- NIO Channel SocketChannel ServerSocketChannel
ServerSocketChannel: ServerSocketChannel是一个基于通道的socket监听器.它同我们所熟悉的java.net.ServerSocket执行相同的基本任务,不过它 ...
- 关于证书如何完成身份验证(SSL证书)
一.写在前面 SSL和IPsec是现在VPN技术中最为常见的,在云计算的应用环境中,SSL更受企业青睐,至于原因的话简单的说就是SSL更为简洁,不需要像IPsec那样需要额外安装客户端,这会带来软件维 ...
- IDEA把spring-boot项目打包成jar
1.打开项目,然后右击项目选中‘Open Module Settings’进入project Structure( 快捷键 Ctrl+Shift+Alt+S或者File->Project Str ...
- PG11开启WAL归档
-创建归档目录 mkdir -p $PGDATA/archive_wals chown -R postgres.postgres $PGDATA/archive_wals -修改参数(在配置文件中配置 ...
- IDEA中不编译src/main/java目录下的*.xml文件
使用idea构建maven项目时不编译src/main/java目录下写的mapper.xml文件,这是找到pom.xml文件,在<build>节点下添加如下代码: <!-- map ...
- shell 数学计算的N个方法
let使用方法 root@172-18-21-195:/tmp# n1=5 root@172-18-21-195:/tmp# n2=10 root@172-18-21-195:/tmp# let re ...
- css重直居中代码
老是忘,记在这里: vertical-align: middle;
- 【curl】certificate is bad 问题解决
参考:https://blog.scottlowe.org/2018/08/20/troubleshooting-tls-certificates/ 我最近正在写一篇博客文章,内容涉及使用TLS证书进 ...
- close yarn install --check-files
To disable this check, please add `config.webpacker.check_yarn_integrity = false` to your Rails deve ...