BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...
标签那么长是因为做法太多了。。。
题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277
(bzoj 3473) https://www.lydsy.com/JudgeOnline/problem.php?id=3473
题解:
先讲三个做法公共部分: 建出广义SAM,然后对于每个点求出它在多少字符串中出现过。
做法一
把每个字符串在广义SAM上暴力跑。每跑到一个点就暴力沿着fail树往上跳,标记跳过的点,直到跳到已标记的点为止(每个串要换用不同的标记)。
时间复杂度\(O(L\sqrt L)\) (\(n\)为串的个数,\(L\)为总长度)
写一下时间复杂度分析: (我自己想的,很有可能是错的,有错恳请大佬指出!!感谢)
假设某个字符串长度为\(x\), 则最坏情况下它一直在往深处走,并且每一步都没有碰到已经跳过的点,这种情况下其走的步数是\(\sum^{x}_{i=1}i=O(x^2)\).
但是它还要受到另一个限制,就是走的步数不超过SAM总大小\(O(L)\). 因此其对时间复杂度贡献为\(O(\min(x^2),L)\).
计算最坏情况下的时间复杂度,也就是已知\(\sum^{m}_{i=1} x_i=L\), 求\(\sum^{m}_{i=1} \min(x_i^2,L)\)的最大值。显然当\(x_i>\sqrt L\)时是没有任何意义的(白白浪费代价,价值不增加),所以就是已知\(\sum^{m}_{i=1} x_i=L\)且对于任意\(i\)有\(i\le \sqrt L\), 求\(\sum^{m}_{i=1} x_i^2\)的最大值。由函数的凹凸性知显然(或者也可以用偏导数解释,如果你愿意的话。。。)所有串长均为\(\sqrt L\)时目标函数最大,为\(O(L\sqrt L)\).
做法二
类似于BZOJ2754/BZOJ2780, 就是个数颜色问题,每个点开个set记录经过这个点的所有串,然后沿着Parent树自下而上启发式合并。时间复杂度\(O(n\log^2n)\).
线段树合并貌似可以做到\(O(n\log n)\)?
做法三
依然是数颜色,可以使用DFS序+主席树等各种神奇做法解决。时间复杂度\(O(n\log^2n)\) (?)
代码
做法一
因为BZOJ崩了所以暂时找不到,弃坑待填。
BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...相关推荐
- BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析)
标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...
- BZOJ.2780.[SPOJ8093]Sevenk Love Oimaster(广义后缀自动机)
题目链接 \(Description\) 给定n个模式串,多次询问一个串在多少个模式串中出现过.(字符集为26个小写字母) \(Solution\) 对每个询问串进行匹配最终会达到一个节点,我们需要得 ...
- BZOJ-3473 (广义后缀自动机:拓扑 or 启发式合并)
BZOJ-3473 (广义后缀自动机:拓扑 or 启发式合并) 题目链接 题意 nnn个字符串,询问每个字符串一共有几个子串至少出现在nnn个字符串中的kkk个 思路: 拓扑 建广义后缀自动机, dp ...
- BZOJ5137lg4081(广义后缀自动机,set启发式合并)
BZOJ5137&&lg4081(广义后缀自动机,set启发式合并) 题面 自己找去 HINT 给定多个文本串,让你查询每个文本串中有多少个本质不同的子串且这个子串只出现在当前这个文本 ...
- BZOJ 2806 Luogu P4022 [CTSC2012]Cheat (广义后缀自动机、DP、二分、单调队列)
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=2806 (luogu) https://www.luogu.org/pro ...
- BZOJ.3277.串(广义后缀自动机)
题目链接 \(Description\) 给定n个串和K,求每个串中有多少个子串是这n个串中至少K个串的子串. \(Solution\) 同上题,我们可以算出每个节点所代表的串出现在了几个串中:而且我 ...
- bzoj 3277 串 后缀树+子树不同数个数
题目大意 给定\(n\)个字符串和\(k\) 对于每个字符串,输出它有多少个子串至少是\(k\)个字符串的子串(包括自己) 分析 建出广义后缀自动机 至少是\(k\)个字符串的子串就是求子树内不同数个 ...
- bzoj 4566 找相同字符 —— 广义后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4566 建出两个串的广义后缀自动机: 统计每个点在两个串中出现次数的子树和,其实就是在两个串中 ...
- bzoj 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1009 Solved: 596 [ Subm ...
最新文章
- 出块过程 (1)close发送消息
- 更新Oracle的Date字段
- C语言头文件为什么要加#ifndef #define #endif(防止头文件重复包含)
- 霍金的遗愿清单:离开地球,警惕人工智能
- 【UI插件】简单的日历插件(下)—— 学习MVC思想
- 使用 Request.QueryString 接受参数时,跟编码有关的一些问题
- 【第8篇】Python爬虫实战-批量删除csdn私信记录
- maven 搭建私有仓库
- Property 和 Attribute 的区别(转)
- jQuery给页面弹出层添加半透明背景
- 【字符串全排列】LeetCode 567. Permutation in String
- 论文Express | 把你的口哨变成莫扎特风,Facebook发布通用音乐迁移网络
- (秒杀项目) 4.8 异步化扣减库存(核心)
- matlab simulink光伏发电系统MPPT算法
- 长沙理工大学第十二届ACM大赛【9/12】
- 森林防火三维地理信息系统
- TREC之使用terrier进行信息检索
- 认识Vue源码 (2)-- 手写类Vue框架:Zue
- java 静态抽象类_java--抽象类实例(包含静态内部抽象类)
- 阿里飞冰(Iceworks)入门和飞冰是干什么的
热门文章
- 二十三、“为天下人谋幸福,才是真正的大事。”(2021.7.9)
- 天池 O2O 优惠券使用预测思路解析与代码实战
- linux非交互式脚本,Linux expect非交互式执行脚本
- Singleton模式的实现
- 动态加载JS脚本的4种方法
- 批处理for命令详解(转) 批处理for命令详解
- 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)
- dokuwiki 部署笔记
- python 图片上传到minio时,在minio不是显示图片格式
- 堆排序(基于完全二叉树)