08 2020 档案

摘要:SP1811 LCS - Longest Common Substring 用 sam 进行字符串匹配,建 s 的 sam,然后用 t 在 s 的 sam 上进行匹配,匹配过程中,沿着 Next 转移往下走,如果失配,则沿着 link 链接往上跳,因为 link 链接是该节点的后缀,所以这样跳就不会 阅读全文
posted @ 2020-08-19 14:41 caoanda 阅读(120) 评论(0) 推荐(0) 编辑
摘要:P3975 [TJOI2015]弦论 一定要记得初始化! 后缀链接连接的节点所表示的字符串是该节点表示字符串的后缀,先将所有新增节点的dp[i]都置为1(除了拆点),一个节点所表示字符串的出现次数是其子树所有dp值之和(下标不同,本质相同的两个串是不同串) 如果下标不同,本质相同的两个串属于一个串的 阅读全文
posted @ 2020-08-18 11:03 caoanda 阅读(121) 评论(0) 推荐(0) 编辑
摘要:回文自动机做题技巧 ① 灵活利用维护的各个数据: 节点x len[x]表示该节点表示的字符串的最长长度 fail[x]指向的节点表示的字符串是节点x表示字符串的最长子回文串 cnt[x]在经过以下处理后表示在s中该节点所表示字符串在s中的出现次数 for(int i=sz;i>=0;++i) cnt 阅读全文
posted @ 2020-08-17 09:44 caoanda 阅读(131) 评论(0) 推荐(0) 编辑
摘要:最小表示法 参考:最小表示法 目的:O(n)求出一个序列循环同构中最小的那一个(在字符串中表示为字典序最小的一个循环同构) 优化内容:i,j 分别是当前比较的起始下标,k 是已比较的个数。当前假设Ai+k>Bj+k,那么对于i+p(ii+pi+k)起始的字符串,$ 阅读全文
posted @ 2020-08-16 16:44 caoanda 阅读(205) 评论(0) 推荐(0) 编辑
摘要:1001 Tokitsukaze, CSL and Palindrome Game 比较字典序的时候考虑树上倍增,用树上倍增的时候要保证路径相同,所以把路径哈希一下,直接比较即可 但是当我把maxn开到1e5+5的时候很奇怪的就wa了,开到1e5+20才过 // Created by CAD #in 阅读全文
posted @ 2020-08-16 09:57 caoanda 阅读(263) 评论(0) 推荐(0) 编辑
摘要:pb_ds中的hash_table 参考: pd_ds中的hash 需要的头文件和命名空间: #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/hash_policy.hpp> using namespace __gnu_pbds; 阅读全文
posted @ 2020-08-09 16:17 caoanda 阅读(852) 评论(0) 推荐(0) 编辑
摘要:J. The Escape Plan of Groundhog 首先这道题肯定只能O(n3)来写,暴力来求的话是O(n4),那么我们只需要优化一个O(n)就好了。 优化的方法是用一个枚举子矩形宽的长度,然后再依次遍历每一行,首先要满足要求(两条高上的点需要全是1),下底的点全为1,最后一 阅读全文
posted @ 2020-08-09 12:27 caoanda 阅读(147) 评论(0) 推荐(0) 编辑
摘要:How far away ? 预处理出每一个节点到根节点的距离即可,两个节点之间的距离为len[x]+len[y]-2*len[lca(x,y)] // Created by CAD #include <bits/stdc++.h> #define fi first #define se secon 阅读全文
posted @ 2020-08-08 10:40 caoanda 阅读(186) 评论(0) 推荐(0) 编辑
摘要:1007 Tree 这道题的解题思路就是树形 dp,在求解过程中,尤其要注意 k 为0和1的时候的情况讨论。细节决定了这道题能不能A。 // Created by CAD #include <bits/stdc++.h> #define ll long long using namespace st 阅读全文
posted @ 2020-08-07 20:51 caoanda 阅读(259) 评论(0) 推荐(0) 编辑
摘要:O(log(n))求第k个父亲节点 参考:树上倍增的写法和应用(详细讲解,新手秒懂) // Created by CAD #include <bits/stdc++.h> using namespace std; const int maxn=5e5+5; vector<int> g[maxn] 阅读全文
posted @ 2020-08-05 09:33 caoanda 阅读(141) 评论(0) 推荐(0) 编辑
摘要:###倍增法求最近公共祖先 参考:题解 P3379 【模板】最近公共祖先(LCA) 参考:树上倍增的写法和应用(详细讲解,新手秒懂) // Created by CAD #include <bits/stdc++.h> using namespace std; const int maxn=5e5+ 阅读全文
posted @ 2020-08-05 09:31 caoanda 阅读(118) 评论(0) 推荐(0) 编辑
摘要:J. Pointer Analysis 读题的时候一定要仔细啊…比赛的时候读错题,写了半天都是 wa 的 其实只要把思路理清了,实现起来就很方便了。 对于每一个大写字母,只需要保存其可指向的对象即可,因为最多只有26个,因此直接用状态压缩即可,而且对于合并操作也很方便。 // Created by 阅读全文
posted @ 2020-08-02 14:32 caoanda 阅读(151) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示