首页 > 其他分享 >2022-2023 集训队互测 Round 6 - >.<

2022-2023 集训队互测 Round 6 - >.<

时间:2025-01-10 19:22:01浏览次数:1  
标签:松弛 持久 线段 Round 遍历 2022 mathcal 节点 互测

不能包含某一条路径,这个东西看起来很像字符串啊!我们把这些路径插入到 trie 中,建立 AC 自动机,然后再把 \(n\) 个单点插进去。在建出来的 AC 自动机上跑最短路,钦定某些点不能被进入即可。但是因为字符集是 \(\mathcal O(n)\) 的,所以直接暴力连边复杂度无法接受。

考虑连边的过程,是继承 fail 树父亲的边,再更新它到它在 trie 树上的后继所对应的边。我们就可以发现这个连边其实是可以用可持久化线段树来维护的,支持继承操作和修改操作。这一部分的话时间就是 \(\mathcal O((n+m+L)\log (n+m+L))\) 的了。但是因为边的数量还是很多,所以最短路算法的时间还是难以承受。

既然这些边能在可持久化线段树中用 \(\mathcal O((n+m+L)\log n)\) 个节点存下来,那么为什么要暴力地遍历 \(\mathcal O(n^2)\) 次呢?我们知道,Dijkstra 算法中每次从优先队列中取出的距离是单调不降的。这意味着,某个节点利用可持久化线段树上的一个点上的信息进行松弛对应节点后,下一次另一个节点来松弛时,肯定不会造成任何影响,因为对应的被松弛节点和边权都是固定的,而后面的距离肯定不比前面小,所以后面的松弛是无用的。我们在优先队列中取出一个节点后,遍历这个节点(版本)所对应的可持久化线段树,遇到被标记过的点就退出,再用被遍历到的边松弛,并把这整棵树没有被标记的地方打上标记。那么一条边至多松弛一次,可持久化线段树的每个节点只被遍历一次,故至此我们用 \(\mathcal O((n+m+L)\log (n+m+L))\) 的复杂度解决了此问题。

细节比较多,比如被钦定不能被进入的点要沿 fail 树下传(ACAM 老生常谈的挂法),以及一条边如果在原图中是不存在的,也需要注意不能存在于新图中。

标签:松弛,持久,线段,Round,遍历,2022,mathcal,节点,互测
From: https://www.cnblogs.com/TulipeNoire/p/18664363/2022_2023_Homework_R6T3

相关文章

  • (即插即用模块-Attention部分) 三十四、(2022) FACMA 频率感知跨通道注意力
    文章目录1、Frequency-AwareCross-ModalityAttention2、WeightedCross-ModalityFusionmodule3、代码实现paper:FCMNet:Frequency-awarecross-modalityattentionnetworksforRGB-DsalientobjectdetectionCode:https://github.com/XiaoJinNK/FCMNet1、......
  • Adobe Premiere Pro 2022 下载安装教程,亲测有效
    简介嗨咯,大家好,今天为大家带来的事AdobePremierePro2022下载安装教程,亲测有效。AdobePremierePro是一款领先的视频编辑软件,适用于电影、电视和网络内容创作。该软件结合强大的创意工具、Adobe应用程序和服务的深度集成以及AdobeSensei的AI技术,可帮助用户轻......
  • VP Codeforces Round 995 (Div. 3)
    A.PreparingfortheOlympiad题意,有两个数组a和b,如果你选了a数组中第i个,那么对手获得b数组第i+1个,求你们得分的差值最大。直接加上所有ai>bi+1的就行。点击查看代码voidsolve(){intn;std::cin>>n;std::vector<int>a(n),b(n);for(inti=0;......
  • VP Codeforces Round 994 (Div. 2)
    A.MEXDestruction题意:给你一个数组,每次操作选择一个区间使这个区间变为区间mex,问最少操作使得数组全为0.容易发现,对任意一个区间,最多两次操作这个区间就会全变成0,于是我们想尽可能操作大的区间。但并不是直接操作整个数组一定更好,如果我们选择的区间里没有0,那么只需要一次操......
  • Codeforces Round 986 (Div. 2) CF2028 代码集
    CodeforcesRound986(Div.2)CF2028代码集目录CodeforcesRound986(Div.2)CF2028代码集CF2028A-Alice'sAdventuresin''Chess''CF2028B-Alice'sAdventuresinPermutingCF2028C-Alice'sAdventuresinCuttingCakeCF2024D-A......
  • wx.startLocationUpdateBackground
    wx.startLocationUpdateBackground(Objectobject)基础库2.8.0开始支持,低版本需做兼容处理。以Promise风格调用:支持用户授权:需要scope.userLocationBackground小程序插件:不支持微信鸿蒙OS版:支持相关文档:地理位置接口新增与相关流程调整功能描述开启小程......
  • vs2022遇到“停止生成”的问题
    关闭vs2012,提示必须停止生成,第一次遇见不知道怎么办,查了下,第一种解决了。在使用VisualStudio2022时,如果遇到“停止生成”的问题,可以尝试以下几种解决方案:取消生成:在VisualStudio的主界面,点击“生成”菜单,然后选择“取消”。使用快捷键 Ctrl+Break 来取消当前正......
  • Visual Studio 2022 上架腾讯云 AI 代码助手了
    近期在VisualStudio市场上上架了腾讯云AI代码助手。该插件可以在VisualStudio2022版本(含社区版,版本不低于17.6即可)使用智能辅助编码能力,助力VisualStudio的开发者提高效率。我们在该平台上支持技术对话、代码补全、单元测试生成、解释代码、修复代码等场景。如何安装......
  • 用 2025 年的工具,秒杀了 2022 年的题目。
    你好呀,我是歪歪。前几天打开知乎的时候,在付费咨询模块,我看到了一个差不多两年半前没有回答的技术问题。其实这个问题问的很清晰了,但是当时我拒绝了:虽然过去快两年半的时间,但是我记得还是比较清楚,当时拒绝的理由是如果让我来回答这个问题,我肯定是首选基于Redis来做。大家想......
  • E94 Tarjan边双缩点+树形DP P8867 [NOIP2022] 建造军营
    视频链接:E94Tarjan边双缩点+树形DPP8867[NOIP2022]建造军营_哔哩哔哩_bilibili  P8867[NOIP2022]建造军营-洛谷|计算机科学教育新生态//Tarjan边双缩点+树形DPO(n)#include<bits/stdc++.h>usingnamespacestd;intread(){intx=0,f=1;charc=getchar......