Jzoj3443 压缩

宠物领养系统开发:前后端分离与微服务架构实践 现代Web应用开发中,前后端分离架构与微服务设计已成为主流技术方案。通过SpringBoot快速构建RESTful API,结合Vue3的响应式前端,可以高效实现业务逻辑与用户界面的解耦。MyBatis作为持久层框架,配合MySQL关系型数据库,能够确保数据操作的灵活性与安全性。这类技术组合特别适用于需要处理复杂业务逻辑的中大型系统,例如宠物领养平台。系统通过标签化搜索算法提升匹配精度,采用JWT实现安全认证,并利用缓存策略优化性能。在实际应用中,此类架构可显著提升开发效率,同时保证系统的可扩展性和维护性。 阅读详情

一个文本压缩后由若干个单元组成,每个单元由3部分组成:1.正文(小写字母组成的字符串)2.若干个”*”,表示正文的又重复了几次3.单元的结尾符号”$”,显然,对于同一文本,压缩后的表示方法不唯一,但是为了方便,我们要求你采用压缩后字符串最短的压缩方法,如果有多种压缩方法,只需输出任意一种。n<=2000

看到数据范围我们发现可以用dp,设f[i][j]表示目前在第i位,最后一个循环串的长度为j的情况下,最短的长度

那么显然,无论怎么样,有一种转移总是成立的,f[i][j]=min(f[i-j][k]+j+1),这相当于新开了一个循环节

而另一个转移需要满足一个条件,f[i][j]=min(f[i-j][j]+1),当s(i-j+1,i)=s(i-j*2+1,i-j)时,这相当于在循环节里面加入一个*

那么综合下来转移就是n^3的,我们加上两个优化

1.令g[i]为min(f[i][k]),避免每次枚举k

2.判断字串相等用hash

这样我们可以将复杂度将为n^2

接下来说一下如何输出方案

先记录下s[i][j]表示状态i,j的最后一个循环节j循环次数,和上面两种转移对应,s[i][j]=1或者s[i][j]=s[i][i-j]+1

我们令d[i]表示答案为g[i]时,最后一个循环节的循环次数,令r[i]为此循环节的长度,那么求解g[i]时,就可以顺便求解d[i]和r[i]

最后输出即可

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define L long long
using namespace std;
int n,m=0; char str[2010],A[2010];
int f[2010][2010],b[2010],d[2010];
int h[2010],g[2010],s[2010][2010],r[2010];
__attribute__((optimize("-O3")))
inline L gH(int l,int r){ return h[r]-h[l-1]*b[r-l+1]; }
int main(){
	freopen("compress.in","r",stdin);
	freopen("compress.out","w",stdout);
	scanf("%s",str+1); n=strlen(str+1);
	for(int i=*b=1;i<=n;++i){
		b[i]=b[i-1]*27;
		h[i]=h[i-1]*27+str[i]-'a';
	}
	memset(g,127,sizeof g); *g=0;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=i;++j){
			f[i][j]=g[i-j]+j+1; s[i][j]=1;
			if(f[i][j]<g[i]){ d[i]=1; r[i]=j; g[i]=f[i][j]; }
			if(i>=(j<<1) && gH(i-j+1,i)==gH(i-j*2+1,i-j))
				if(f[i][j]>f[i-j][j]+1){
					s[i][j]=s[i-j][j]+1;
					f[i][j]=f[i-j][j]+1;
					if(f[i][j]<g[i])
						{ d[i]=s[i][j]; r[i]=j; g[i]=f[i][j]; }
				}
			g[i]=min(g[i],f[i][j]);
		}
	for(;n;){
		A[m++]='$';
		for(int i=1;i<d[n];++i) A[m++]='*';
		for(int i=n;i>n-r[n];A[m++]=str[i--]);
		n-=r[n]*d[n];
	}
	reverse(A,A+m); puts(A);
}


AD5940阻抗测量开发板实战:从源码获取到工程调试全解析 本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。 阅读详情

相关推荐

微生物组β-多样性——PCoA分析及可视化

让你的数据映入眼帘

qq_47369980的博客 1万+

与AI实验室建立长期技术互动:获取前沿洞察与专属支持

人工智能技术生态中,与AI实验室建立长期互动关系是开发者获取前沿技术洞察的重要途径。这种互动基于开源社区协作模式,通过技术沙龙、内测参与等渠道实现双向价值交换。从工程实践角度看,持续的技术交流能帮助开发者提前掌握模型优化方案、硬件适配技巧等核心知识,显著降低AI应用部署门槛。特别是在处理显存优化、批量处理稳定性等具体场景时,实验室提供的专属技术支持往往能解决关键瓶颈。随着AI技术快速迭代,这种互利共赢的互动模式已成为开发者保持技术竞争力的重要策略,既能获得最新模型测试权限,又能通过社区反馈直接影响产品演进方

dianning8393的博客 365

WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一)

经过半个月的坎坷安装过程,连Windows系统都没装过的本人终于颤颤巍巍把CSI TOOL装好了,下面记录一下适于我所使用设备的安装过程。设备:一台THINKPAD X201,一台师兄借的华硕主板的台式机首先,如果你和我一样对linux其实一窍不通的话,建议先反复看教程里的安装代码,照猫画虎很难一步实现的,中途一定会有这或那的问题需要解决,所以该了解的基础linux指令还是要了解,起码安装过程中的那些指令可以去查一查。.........

Silver_777的博客 2万+

BZOJ 1068: [SCOI2007]压缩 区间dp

Description   给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息。压缩后的字符串除了小 写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位置左边没 有M,则从串的开始算起)开始的解压结果(称为缓冲串)。 bcdcdcdcd可以压缩为bMcdRR,下面是解压缩的过程   另一个例子是ab...

_ostreamBaba 256

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5918

Unreal Engine鸿蒙移植实战:环境配置、构建流程与性能优化指南

游戏引擎移植是跨平台开发中的关键技术环节,其核心原理在于通过适配目标操作系统的底层接口和工具链,实现同一套代码在不同硬件和软件环境下的高效运行。这项技术的价值在于最大化代码复用率,降低多平台维护成本,并能让应用快速触达新兴生态系统的用户。在移动游戏和XR应用领域,随着鸿蒙HarmonyOS生态的快速发展,将成熟的商业引擎如Unreal Engine迁移至此平台,成为开发者探索新市场机会的重要路径。本文聚焦于Unreal Engine项目向鸿蒙系统的移植实践,详细解析了从环境搭建、源码适配到构建打包的全链路流

weixin_29011395的博客 402

[日常训练] 压缩

PS:由于编辑器原因以下用“#”代替“$”【题目描述】巨大的文本往往令人头疼,特别是文本内容有大量重复的情况下,巨大的文本不便于运输和阅读,于是我们提出了NOIP(Nonsense Obivous Index Pattern(荒谬的显然索引法)),一种“有效的”压缩文本的方法。 NOIP压缩后的格式很特别,一个文本压缩后由若干个单元组成,每个单元由3部分组成:1.正文(小写字母组成的字符串)2.若

Log_x's Blog 538

从RadixTree到哈希表:深入对比SGLang和vLLM的Prefix Cache实现差异

本文深入对比了SGLang与vLLM在大语言模型推理服务中实现Prefix Cache(前缀缓存)的两种核心方案。SGLang采用基于Radix Tree的RadixAttention,支持任意长度前缀的精确匹配与灵活复用;vLLM则采用基于哈希表的方案,深度集成于PagedAttention,实现简洁但要求块级精确对齐。文章剖析了二者在设计哲学、内存管理、适用场景及集群级优化(如Prefix Cache Aware Routing)上的关键差异,为高性能LLM服务的技术选型提供决策依据。

blockchain9miner的博客 954

Jzoj3467 最长上升子序列

维护一个序列,使它可以进行下面两种操作: 1.在末尾添加一个数字x 2.将整个序列变成第x次操作后的样子 在每次操作后,输出当前序列的最长上升子序列的长度 序列初始时为空 嗯,可持久化线段树的裸题 额这可是noip提高组难度的题,我们发现所有操作可以变成一棵树(离线做法老套路了) 让后每次最多修改数组上的一个值(考虑二分求LIS的过程)最后改回去就好了 注意dfs又卡栈(jzo

扩展の灰(Extended Ash/Cooevjnz) 3022

实测对比:纳芯微NSD1624在光伏逆变器中的性能表现(含温度测试数据)

本文详细评测了纳芯微NSD1624非隔离驱动芯片在光伏逆变器中的性能表现,包括动态效率、高温稳定性及抗干扰能力。实测数据显示,该芯片在800V母线电压下效率峰值达99.03%,高温环境下结温稳定在102.7℃,且传播延迟一致性优异。与竞品相比,NSD1624在总损耗和热阻方面具有显著优势,是光伏逆变器驱动方案的理想选择。

weixin_29297127的博客 362

YOLOv8 骨骼结构识别详细说明

YOLOv8骨骼结构识别是一种基于深度学习技术的医学影像分析方法,主要用于X光、CT等影像中的骨骼定位与识别。该系统具有多骨骼同步识别能力,可应用于手部、脊柱、骨盆等不同部位,并能精确定位骨骼关键点。技术实现包括数据预处理、模型训练、推理检测、关键点分析和批量处理五个核心模块,支持骨折检测、骨龄评估等临床应用。该系统需注意医学合规性,要求高质量标注数据,并针对骨骼影像特点进行特征工程优化,同时考虑不同设备的部署需求。

u010117029的博客 330

Jzoj4210 我才不是萝莉控呢

小Y:“小R你是萝莉控吗。”小R:“...”  为了避免这个尴尬的话题,小R决定给小Y做一道题。 有一个长度为n的正整数数组A,满足艾> =艾+ 1,现在构造一个数组B,令的Bi = ΣA[j] (j∈[i,n])。 现在,有一个N * N的网格图,左下角坐标是(1,1),右上角坐标是(N,N)。有一个小SB正在坐标为(n,1)的位置,每一时刻,如果他现在在(x,y),他可以选择走到(x?-

扩展の灰(Extended Ash/Cooevjnz) 1772

工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro?

在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。

2601_94871597的博客 428

LOJ 6495~6497「雅礼集训 2018 Day1」

. 真是看懂std就秒的三道题,但是看懂就很难啊 (感谢superguymj和memset0两个大佬的代码) 稍微说一下题解 -------------------------------------------------------- 「雅礼集训 2018 Day1」树 这道题的正解被superguymj大佬吊打了,原来O(n⋅2n)O(n·2^n)O(n⋅2n)变成了O(n4)O(n^4)...

扩展の灰(Extended Ash/Cooevjnz) 1562

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Jzoj4876 基因突变(红警系列)

邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类!     但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。     707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源头基因”人类身上与源

扩展の灰(Extended Ash/Cooevjnz) 1436

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Jzoj5235 好的排列

对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai。对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列。 现在有q个询问,每个询问给定n,k,问有多少排列是好的。答案对10^9+7取模。 显然是计数类dp,我们设f[i][j]表示对于一个1->i的排列,好的位置有j个的情况 考虑转移,显然f[i][j]->f[i+1][k]相

扩展の灰(Extended Ash/Cooevjnz) 1289

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Jzoj4877 力场护盾(红警系列)

ZMiG成功粉碎了707的基因突变计划,为了人类的安全,他决定向707的科学实验室发起进攻!707并没有想到有人敢攻击她的实验室,一时间不知所措,决定牺牲电力来换取自己实验室的平安。     在实验室周围瞬间产生了一个无限大的力场护盾,它看上去无懈可击!不过ZMiG拥有惊人的双向观察能力,经过他的反复观察,找到了这个护盾的N个弱点,他本想逐一击破,却发现一股神秘力量阻止了他的行为。原来他身处力场

扩展の灰(Extended Ash/Cooevjnz) 1169

Jzoj3805 小X的二叉堆计数

题意:给你n个不同的数问你能构成多少个不同的二叉堆 显然不能枚举,我们考虑用递推 我们令f[i]表示以i为根的二叉堆有多少种 令l,r为i的左右儿子,令size[i]为以i为根的堆的大小 那么显然,f[i]=f[l]*f[r]*C(size[i]-1,size[l]),因为n个数互不相同,所以没有重复 相当于是1~size[i]这几个数填进这个堆中,那么显然根只能填最大那个,让后在剩下的

扩展の灰(Extended Ash/Cooevjnz) 888

PKUSC2018部分题解

. LOJ的std+数据+当时讲题的记忆硬是刚了五道题(D1t3咕咕咕) 稍微写一下题解 LOJ6432 「PKUSC2018」真实排名 一道比较简单的题,不过需要注意很多细节 考虑排名不变的两种情况 1.自己分数xxx不变,那么所有分数在[[x2],x)[[\frac{x}{2}],x)[[2x​],x)中的其他人的分数也不能变,否则必然有在自己后面的人到自己前面 2.自己分数xxx翻倍,那么...

扩展の灰(Extended Ash/Cooevjnz) 848

CDQ分治&整体二分九连测

整体二分好难a CDQ分治&amp;amp;amp;amp;整体二分九连: A[适者] 先来一个不是cdq分治的题(虽然也可以用分治做) 首先先来考虑按照什么顺序来搞掉这些机甲 对于两个相邻的机甲i,j,先i后j的代价是Ai∗Di+(Di+Dj)∗AjAi∗Di+(Di+Dj)∗AjA_i*D_i+(D_i+D_j)*A_j 那么如果i应该比j先消灭就有 Ai∗Di+(Di+Dj)∗Aj&amp;amp;amp;lt;A...

扩展の灰(Extended Ash/Cooevjnz) 757

Jzoj4727 挺进

题意:给你一颗树,要求断掉一条边,使得剩下两个联通快的直径之和最大 一看就是树形DP嘛,c1表示最长边c2次长,f表示父亲部分的最长路 上面做法不讲,我们讲一种比较新奇的方法 假设我们枚举断哪一条边,在lgn时间内求出两个联通快的直径不就行了嘛 怎么做呢,我们发现,可以用树的dfs序来维护,我们用一个线段树维护一个区间内的直径的端点和长度 额,如何合并? 我们假设两块的直径端点分别为x

扩展の灰(Extended Ash/Cooevjnz) 756

Jzoj3902 游戏

农夫FJ和奶牛Bessie玩游戏,游戏由一个黑板和N张卡片组成。游戏初始时,黑板写的数字是0。每张卡片都写有一个[0,511]的整数。FJ和Bessie轮流操作,FJ先操作。操作者每次从当前的卡片中选取一张卡片出来(被选出来的卡片不会被再次利用),假设选出来的卡片写的数是X,并假设当前黑板写的数是Y,那么本轮操作后黑板的数变成Y|X,其中|是位操作的或。如果某个操作者没有卡片可取了(卡片已经取完)

扩展の灰(Extended Ash/Cooevjnz) 740

Jzoj5542 董先生的钦点

这道题在我做的前一天被wjw大佬压中了,当时随便脑洞了一个做法 于是在比赛还剩3分钟的时候我把它写了一下就切了 考虑一个集合S,f(S)=ΣSi 显然我们将所有的f排序之后有一个性质rank[f(S)]+rank[f(~S)]=2^N 那么显然,中位数就是将全集划分为两个尽可能平均的集合的较大一部分 我们考虑dp,f[i]=max(f[i-v[j]]+v[j]) ,答案即为f[S/2]

扩展の灰(Extended Ash/Cooevjnz) 725

Jzoj4771 爬山

国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。 对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。 请你计算出在此次爬

扩展の灰(Extended Ash/Cooevjnz) 722

Jzoj4738 神在夏至祭降下了神谕(GOSICK系列)

我们先写裸的dp,设φ[i]表示长度为i的划分方案数,φ(0)=1 有φ(i)=Σφ(j) (|sum[j,i]|sum用前缀和预处理就好(将0视为-1) 那么我们考虑用树状数组快速更新,我们发现,若s[j](前缀和)在[s[i]-k,s[i]+k]中就可以合法转移 所以我们考虑将φ[i]的值插入到s[i]的位置上,每次更新即可 注意s[i]可能为负数,要开两倍长度 #include

扩展の灰(Extended Ash/Cooevjnz) 693

Jzoj4889 最长公共回文子序列

YJC最近在学习字符串的有关知识。今天,他遇到了这么一个概念:最长公共回文子序列。一个序列S,如果S是回文的且分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共回文子序列。YJC很聪明,他很快就学会了如何求最长公共回文子序列。他现在想把问题规模扩大一些,于是他提出了这么一个问题:给一个长度为n(1≤n≤100000)的字符串a和一个长度为m(1≤m≤2

扩展の灰(Extended Ash/Cooevjnz) 649
上一篇: Jzoj3223 Ede的新背包问题
下一篇: Jzoj3497 隐藏指令
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值