杂题选记

news/2025/12/9 20:15:34/文章来源:https://www.cnblogs.com/AysctLucky/p/19328298

记录一些我觉得比较有意思的题目。难度差异可能会很大。

书信

给一个字符串 \(S\),对于 \(S\) 中的每一类字符,可以选择一个区间 \([l,r]\) 保留,保留的字母间相对顺序不变。

每一个位置有权值 \(w_i\)

求将 \(S\) 变为 \(T\) 的同时最小化删去位置的权值和。

解题思路

首先考虑刻画字母删除和保留。一个字母可以删除,则其前面/后面没有选择的相同字母。我们发现这个可以通过对 \(T\) 的匹配位数 \(j\) 来刻画。

于是设 \(f_{i,j}\) 表示 \(S[1,i]\) 匹配上 \(T[1,j]\) 的最小代价。

通过预处理,我们可以得知 \(L_c\)\(R_c\) 表示 \(c\)\(T\) 中出现的最前/最后位置。考虑当还没有用上 \(c\)\(j<L_c\))和已经用完 \(c\)\(j \geq R_c\))时可以删去 \(c\)

于是转移:

\[\begin{array}{c} [j+1 < L_{s[i+1]}+1 \vee j+1 > R_{s[i+1]}]: f_{i,j}+w_{i+1} \to f_{i+1,j} \\ [S_{i+1}=T_{j+1}]: f_{i,j} \to f_{i+1,j+1} \end{array} \]

可以获得 \(30 pts\)

考虑优化。可以发现第一个转移只和 \(j\) 以及 \(s[i+1]\)(具体的字母)有关。启发我们按照转移一的成立对 \(j\) 分组。具体来说,就是将所有的 \(L_c\)\(R_c+1\) 作为分界线,这样同一个段内的所有 \(j\) 对于相同的 \(c\) 的转移情况就是相同的了。

这样一共会分出 \(O(|\Sigma|)\) 个段。

同时,我们注意到段内的 \(j\)\(j+1\) 的转移中,\(f_{i,j}+w_{i+1} \to f_{i+1,j}\)\(f_{i,j} \to f_{i+1,j+1}\) 不同时成立。也即从 \((i,j_{1})\)\((?,j_{k})\) 的转移路径是唯一的。我们只要把那些 \(f_{i,j} \to f_{i+1,j+1}\) 的位置提出来,用字符串哈希判断转移路径是否可行即可。

时间复杂度就是 \(O(Tn|\Sigma|)\)

代码
#include<bits/stdc++.h>
#define int long long
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define file(x) (fin(x),fout(x),0)
using namespace std;
int My_File_IO=file(letter);
const int inf=1e16;
int n,m;
char s[200005],t[200005];
int w[200005],sumw;
namespace Hash{using ull=unsigned long long;using ui=__uint128_t;const ull mod=(1ull<<61)-1;const int bse=114514;inline ull pls(ull x,ull y){return (x+y>=mod?x+y-mod:x+y);}inline ull sub(ull x,ull y){return (x<y?x+mod-y:x-y);}inline ull mul(ull x,ull y){ui r=ui(x)*y;return pls(r>>61,r&mod);}ull fpow(ull a,ull b=mod-2){ull r=1;while(b){if(b&1)r=mul(r,a);a=mul(a,a);b>>=1;}return r;}ull pw[200005],ipw[200005];void init(){for(int i=pw[0]=1;i<=200000;i++)pw[i]=mul(pw[i-1],bse);ipw[200000]=fpow(pw[200000]);for(int i=199999;i>=0;i--)ipw[i]=mul(ipw[i+1],bse);}template<int siz>struct hsa{int usecnt;ull h[siz+1];void load(char *s,int n){for(int i=1;i<=n;i++)h[i]=pls(mul(h[i-1],bse),s[i]);usecnt=n;}void join(char s){usecnt++;h[usecnt]=pls(mul(h[usecnt-1],bse),s);}void cls(){usecnt=0;}ull cut(int l,int r){return sub(h[r],mul(h[l-1],pw[r-l+1]));}};
}
using Hash::hsa;
hsa<200005> hs,tmphs;
int fj[150],tot;
int f[200005];
int mn[30],mx[30];
void tmain(){cin>>n>>m>>(s+1)>>(t+1);for(int i=1;i<=n;i++)cin>>w[i],sumw+=w[i];hs.load(t,m);tot=sumw=0;for(int c=0;c<26;c++){mn[c]=m+1,mx[c]=0;for(int i=1;i<=m;i++)if(t[i]=='a'+c)mn[c]=min(mn[c],i),mx[c]=max(mx[c],i);if(mn[c]==m+1)continue;fj[++tot]=mn[c];fj[++tot]=mx[c]+1;}fj[++tot]=1;fj[++tot]=m+1;// for(int i=1;i<=m+1;i++)fj[++tot]=i;sort(fj+1,fj+1+tot);tot=unique(fj+1,fj+1+tot)-fj-1;f[0]=0;for(int i=1;i<=n;i++)f[i]=inf;for(int j=1;j<tot;j++){static int g[200005];fill(g,g+1+n,inf);for(int i=0;i<n;i++){if(fj[j]<mn[s[i+1]-'a']+1||fj[j]>mx[s[i+1]-'a'])f[i+1]=min(f[i+1],f[i]+w[i+1]);if(s[i+1]==t[fj[j]])g[i+1]=min(g[i+1],f[i]);}memcpy(f,g,(n+1)*sizeof(int));if(fj[j+1]==fj[j]+1)continue;tmphs.cls();int ct=fj[j+1]-fj[j]-1;static int sw[200005],ok[30],crs[200005];int tn=0;fill(g,g+1+n,inf);memcpy(sw,w,(n+1)*sizeof(int));memset(ok,0,sizeof ok);for(int c=0;c<26;c++)if(fj[j]<mn[c]||mx[c]<fj[j])ok[c]=1;for(int i=1;i<=n;i++)if(!ok[s[i]-'a'])sw[i]=0,crs[++tn]=i,tmphs.join(s[i]);for(int i=1;i<=n;i++)sw[i]+=sw[i-1];for(int i=0,ptr=1;i<n;i++){if(crs[ptr]<=i)ptr++;if(ptr+ct-1>tn)break;if(tmphs.cut(ptr,ptr+ct-1)!=hs.cut(fj[j]+1,fj[j+1]-1))continue;g[crs[ptr+ct-1]]=min(g[crs[ptr+ct-1]],f[i]+sw[crs[ptr+ct-1]]-sw[i]);}memcpy(f,g,(n+1)*sizeof(int));}for(int i=0;i<n;i++)f[i+1]=min(f[i+1],f[i]+w[i+1]);cout<<(f[n]>=inf?-1:f[n])<<'\n';
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);Hash::init();int tid,t;cin>>tid>>t;while(t--)tmain();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/995487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年12月铝材厂家推荐榜:廊坊国美铝业,工业铝材、门窗铝材、3C铝材、通用铝材、多领域铝材定制与绿色生产标杆

随着 2025 年国内基建项目集中开工、新能源产业加速扩张及绿色建筑标准全面落地,铝材作为工业制造与建筑领域的核心基础材料,市场需求持续攀升。但当前市场上厂商技术水平、产品适配能力及环保合规性差异显著,企业在…

Qt 文本转语言(QTextToSpeech类)详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AWS发布网络扫描指南:构建更安全云环境的守则

亚马逊云科技(AWS)正式发布针对客户工作负载的网络扫描行为指导原则。该指南旨在帮助合规扫描工具获取更准确数据,减少滥用报告,并提升整体互联网安全,涵盖了扫描行为的可观测性、可识别性、协作性与保密性四大核…

# 题解#洛谷P2880 Balanced Lineup #ST表#

P2880 [USACO07JAN] Balanced Lineup G - 洛谷 分析f[i][j]记录以i开头,长度为2^i的子段的最值f[i][j+1]=max( f[i][j] , f[i+2^(j-1)][j-1] )代码实现 #include<bits/stdc++.h> #define int long long #defin…

2025年12月包头保洁公司最新推荐:信达家政,包头保洁开荒、包头高空清洗保洁、包头保姆公司、包头保姆家政、包头保姆月嫂、包头保姆护工、服务品质新标准

随着城市生活节奏加快及家庭服务需求多元化发展,家政服务行业正朝着专业化、标准化、精细化的方向升级。2025年,市场对高品质、可信赖的家政服务需求持续增长,但服务机构水平参差不齐、服务标准不一、人员素质差异大…

机器视觉测量与建模

基于机器视觉的空间信息数据获取与处理技术在当今发展迅速、应用前景巨大,它与计算机视觉、计算机图像学、机器人视觉导航、测绘遥感、地理信息系统等学科方向密切相关。本课程将系统地讲解介绍基于机器视觉的三维空间…

2025最值得报的雅思封闭班:高性价比/冲高分/打基础三类优选清单

2025最值得报的雅思封闭班:高性价比/冲高分/打基础三类优选清单一、2025 雅思封闭班选课指南:五维评测体系揭秘 在雅思备考白热化的当下,封闭式培训以沉浸式学习优势成为提分 “加速器”。本文联合 ETS 官方合作机构…

[Java EE] 多线程 -- 初阶(1) - 详解

[Java EE] 多线程 -- 初阶(1) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

AQS与CAS深度讲解

下面我给你 一口气把 AQS 与 CAS 讲透。你有十年 Java 经验,我直接按“面试+底层原理+源码模型”这种工程师能秒懂的方式来讲,不整花里胡哨的。🔥 一、CAS:并发世界的基石(Compare-And-Swap) 1. CAS 是什么? 一…

PKU 数据结构与算法 2025 复习题 坐公交

题目大意 A 城市有 n 个路口,由 n-1 条道路连接,保证所有路口可以通过这些道路相互联通。 A 城市总共有 m 条公交线路,第 i 条公交在路口 x[i] , y[i] 之间双向往复开行。经过并停靠路口 x[i] , y[i] 最短路径上每一…

2025 雅思培训班怎么选?5 大热门机构深度测评 + 避坑指南

2025 雅思培训班怎么选?5 大热门机构深度测评 + 避坑指南作为一名深耕留学备考领域的教育博主,最近后台被问爆了 “雅思培训班该怎么选”。毕竟市面上机构鱼龙混杂,“保分承诺”“名师授课” 的噱头满天飞,稍不注意…

2025年12月模内注塑技术标杆厂商最新推荐:腾达鑫电子科技,引领IML/IMD/IMR/IMP个性化新标准

随着消费电子、家电、汽车等产业对产品外观、耐用性与环保性要求不断提高,模内注塑技术已从传统制造业逐步渗透至智能终端、高端装饰、功能性面板等多个领域。2025年,模内注塑市场规模预计持续增长,但市场上厂商技术…

2025年12月广东佛山智能电动伸缩门厂家TOP推荐:圣田智能科技,安全智能双标杆

随着智慧城市建设加速推进,智能出入口管理需求持续攀升,电动伸缩门作为机关单位、工业园区、住宅小区等场景的核心安防设备,市场规模预计 2025 年将突破 210 亿元。行业快速发展的同时,也出现厂商技术水平、产品质…

ISCTF misc+web部分wp

Web b@by n0t1ce b0ard 可以通过搜索发现作者复现的文章 作者文章: 可以直接利用POC POST /registration.php HTTP/1.1 Host: 127.0.0.1:8081 Content-Length: 1172 Cache-Control: max-age=0 sec-ch-ua: "Chromi…

CF1046I Say Hello - crazy-

二分/三分,模拟 题意 平面上有两个人。有 \(n\) 个时刻,对于每个人,已知他在每个时刻的位置,且他们总会在两个位置间匀速移动。 如果他们的距离小于等于 \(d _ 1\),并且这是他们第一次交谈或者在他们上次互相打招…

church函数与区间算术

上一篇随笔漏了练习2.5和2.6,这边补充一下。 练习2.5要求证明如果能够将a和b的序对表示为乘积(2a)*(3b)对应的整数,我们可以只用非负整数和算术运算表示序对。 这个表述有点绕口,我最初理解为用(2a)*(3b)表示任意整…

day31-GraphRAG

GraphRAG快速入门与原理详解 一、GraphRAG快速入门介绍 当前阶段大模型的应用落地急需解决的核心问题有一个是:如何与私域数据交互。而私域数据主要的问题是:需要有效地将企业数据整合进大语言模型中,但由于大模型的…

Python 函数与 lambda 表达式的结合

示例代码 def calculate(data, func): """高阶函数:对数据列表中的每个元素应用指定函数""" result = [] for item in data: result.append(func(item)) return result numbers = [1, …

最短路径 - Dijkstra(堆优化)中优先队列的懒删除如何理解?

什么是懒删除? 在Dijkstra算法中,同一个节点可能被多次加入优先队列,但只有最短的那次才是有效的。懒删除就是"推迟删除",直到真正从队列中取出时再判断是否有效。 举个例子理解 假设有这样一个图: A -…

最短路径 - Dijkstra(堆优化)中优先队列的懒删除如何理解?

什么是懒删除? 在Dijkstra算法中,同一个节点可能被多次加入优先队列,但只有最短的那次才是有效的。懒删除就是"推迟删除",直到真正从队列中取出时再判断是否有效。 举个例子理解 假设有这样一个图: A -…