当前位置: 首页 > news >正文

P9523 [JOISC 2022] 复制粘贴 3

没见过的区间dp

\(f_{i,j}\)\(s[i,j]\) 能压缩成的最短长度。

首先可以用操作 A 转移 \(f_{i,j}=min(f_{i,j},f_{i,j-1}+A, f_{i+1,j}+A)\)

操作 B 和 C 是一回事,转移时枚举剪切的的子串,设当前剪切板里是 \(s[i,j]\),则 \(f_{p,j}=min(f_{p,j}, f_{i,j} + k \times B + C \times k + A \times [j-p+1-k \times (j-i+1)])\),其中 \(k\)\(s[i,j]\)\(s[p,j]\) 中出现的次数。注意到多余的转移是无意义的,所以 \(s[p,p+j-i] = s[i,j]\)。暴力枚举是会T的,考虑预处理出 \(pr_{i,j}\) 表示所有满足 \(lcp_{i,p} \ge j\)\(p\) 的最大值,做一个 \(n^2\) 的 dp 即可。有转移 \(pr_{i,lcp_{i,p}}=max(pr_{i,lcp_{i,p}},p)\),要注意这里转移的只是最长公共前缀,更短的部分可以继承它的 dp 值,因为一定有 \(pr_{i,j} \ge pr_{i,j+1}\),所以要做一遍后缀 max。

#include<bits/stdc++.h>
using namespace std;
const int N=2600;
typedef long long ll; 
int n,lcp[N][N],pr[N][N];
ll f[N][N],A,B,C;
string s;
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n>>s>>A>>B>>C;s='#'+s;for(int i=n;i>=1;i--){for(int j=i-1;j>=1;j--){if(s[i]==s[j])lcp[i][j]=lcp[i+1][j+1]+1;lcp[i][j]=min(lcp[i][j],i-j);pr[i][lcp[i][j]]=max(pr[i][lcp[i][j]],j);}for(int j=n;j>=1;j--)pr[i][j]=max(pr[i][j],pr[i][j+1]);}memset(f,0x3f,sizeof(f));for(int i=1;i<=n;i++)f[i][i]=A;for(int l=1;l<=n;l++){for(int i=1;i<=n-l+1;i++){int j=i+l-1;f[i][j]=min({f[i][j],f[i+1][j]+A,f[i][j-1]+A});for(int k=1,p=pr[i][l];p;p=pr[p][l],k++){f[p][j]=min(f[p][j],f[i][j]+B+(k+1)*C+(j-p+1-(k+1)*l)*A);	}}}cout<<f[1][n];return 0;
} 
http://www.hskmm.com/?act=detail&tid=34890

相关文章:

  • 2025年10月高端奢侈家电品牌推荐排行榜:五大品牌综合对比与选购
  • P3147 [USACO16OPEN] 262144 P
  • 智能交付时代:国内企业如何选择最适合的CI/CD工具?
  • 吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(三)
  • 2025 年最新彩钢瓦厂家推荐排行榜:屋顶 / 防水 / 屋面等优质产品精选压型 /0.5 厚/屋面/墙面彩钢瓦公司推荐
  • 结对项目--实现一个自动生成小学四则运算题目的命令行程序
  • LCA
  • 【测试分类 (下)】测试分类看这篇就够了:彻底告别概念混淆,轻松搞定工作面试 - 指南
  • 树状数组
  • 如何管控文件外发安全,确保企业数据不被泄露
  • 打通CI/CD最后一公里:制品库如何成为高效流水线的核心枢纽
  • 2025年10月高端奢侈家电品牌推荐排行榜及深度对比分析
  • 嵌入式调式方案:
  • 2025年10月高端奢侈家电品牌推荐排行榜对比与深度评测分析
  • 2025年GEO品牌推荐排行榜前十强权威发布
  • 2025年GEO品牌推荐榜与排行榜Top10:权威解析与行业洞察
  • 2025年10月高端奢侈家电品牌推荐排行榜单对比与评测分析
  • 第五章 linux实战-CMS01
  • 字典树
  • 2025年10月高端奢侈家电品牌推荐排行榜:五大品牌综合对比与选购指南
  • mysql 更新默认时间
  • A. Vasya and Petyas Game
  • Android Studio Archive | Android Studio 归档下载
  • 关系型数据库的基本理论
  • JAVA集合
  • 【最新推荐】分享十大常用又靠谱的文件摆渡系统
  • C语言实现LDPC码译码功能
  • 2025年10月中国试验机厂家推荐:十强榜单对比与性能评测
  • [NOIP 2012 提高组] 开车旅行 的AC代码
  • Voice Chat: Resolving Lag and Stuttering with a Jitter Buffer