20150325

本文详细介绍了AC自动机的优化算法,包括裸AC自动机、分块优化及多级自动机策略,并探讨了树分治算法在特定问题上的应用。此外,还介绍了一种基于数位DP转树形DP的高效算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nico
30%:裸AC自动机,每次加入一个单词之后就重新bfs建fail指针,复杂度O(n^2+m)。
60%:考虑对加入单词的操作进行分块,建立一大一小两个AC自动机,设总长度为l,每加入一个单词就将其加入小自动机并重新bfs,如果小自动机的结点数达到了sqrt(n)则把小自动机中所有串插入大自动机并对大自动机重新bfs。小自动机大小为O(sqrt(n)),bfs的次数为O(n),大自动机大小为O(n),bfs的次数为O(sqrt(n)),总复杂度为O(n*sqrt(n)+m),视评测机效率也可能可以得到100%的分数。
100%:考虑将60%的算法中的两个自动机扩充到log(n)个,第i个自动机的容量上限为2^i,则每个自动机的bfs复杂度为O(n/(2^i))*O(2^i)=O(n),总复杂度为O((n+m)*log(n))。
另外也有离线的做法,由于加密方式的特点可以将字符串倍长之后用SA或者SAM处理,具体做法我不太清楚,放了一个代码在std里,感兴趣的可以去看看。

poi
30%:暴力,每次询问从询问点开始bfs,复杂度O(nm)。
100%:树分治,每个分治中心维护一个树状数组,记录该分治中心覆盖的结点到该分治中心距离为x的食物数量和,对于每个结点记录覆盖它的所有分治中心。计算答案时注意要减去和询问结点在同一棵子树中的结点的答案。树分治复杂度为分治复杂度O(n*log(n))*树状数组复杂度O(log(n))=O(n*log^2(n)),每个结点被O(log(n))个分治中心覆盖,即单次询问复杂度为分治中心数量O(log(n))*树状数组复杂度O(log(n))=O(log^2(n)),总复杂度为O((n+q)*log^2(n))。

nyapasu
30%:暴力(其实我并不知道暴力能不能拿到30%),复杂度O((b-a)*log(b))。
100%:数位DP转树形DP(见2009年刘聪的国家集训队论文《浅谈数位类统计问题》)。按位考虑,首先考虑个位,除了两边之外中间都是012...9的循环,高位同理。可先预处理出g[i][j][k]表示i经过10^k次和j的运算后的结果,再预处理出f[i][j][k]表示
i经过10^k次
{
    和10^j个0进行运算之后
    和10^j个1进行运算之后
    ...
    和10^j个9进行运算之后
}
的结果
(这一段没缩进我觉得我自己都会绕进去)。
剩下的就是在十叉树上进行遍历的过程了。
复杂度O(log^2(b))。
注意因为运算符只是左结合的,所以不能使用结合律。



内容概要:本文档详细介绍了基于MATLAB实现的无人机三维路径规划项目,核心算法采用蒙特卡罗树搜索(MCTS)。项目旨在解决无人机在复杂三维环境中自主路径规划的问题,通过MCTS的随机模拟与渐进式搜索机制,实现高效、智能化的路径规划。项目不仅考虑静态环境建模,还集成了障碍物检测与避障机制,确保无人机飞行的安全性和效率。文档涵盖了从环境准备、数据处理、算法设计与实现、模型训练与预测、性能评估到GUI界面设计的完整流程,并提供了详细的代码示例。此外,项目采用模块化设计,支持多无人机协同路径规划、动态环境实时路径重规划等未来改进方向。 适合人群:具备一定编程基础,特别是熟悉MATLAB和无人机技术的研发人员;从事无人机路径规划、智能导航系统开发的工程师;对MCTS算法感兴趣的算法研究人员。 使用场景及目标:①理解MCTS算法在三维路径规划中的应用;②掌握基于MATLAB的无人机路径规划项目开发全流程;③学习如何通过MCTS算法优化无人机在复杂环境中的飞行路径,提高飞行安全性和效率;④为后续多无人机协同规划、动态环境实时调整等高级应用打下基础。 其他说明:项目不仅提供了详细的理论解释和技术实现,还特别关注了实际应用中的挑战和解决方案。例如,通过多阶段优化与迭代增强机制提升路径质量,结合环境建模与障碍物感知保障路径安全,利用GPU加速推理提升计算效率等。此外,项目还强调了代码模块化与调试便利性,便于后续功能扩展和性能优化。项目未来改进方向包括引入深度强化学习辅助路径规划、扩展至多无人机协同路径规划、增强动态环境实时路径重规划能力等,展示了广阔的应用前景和发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值