07 2021 档案

摘要:题目来源 luogu. 1. [USACO19DEC] Milk Visits S 简明题意:树上的每个结点都是黑白两种颜色之一,每次询问一条链上是否有某种颜色。 思路: 一道简单的套路题…… 两种颜色可以分开讨论,每次关注一种颜色即可。 加强一下这道题,改成询问一条链上某种颜色结点的个数。 dfs 阅读全文
posted @ 2021-07-23 22:20 pjykk 阅读(68) 评论(0) 推荐(0) 编辑
摘要:字符串算法果然玄学=_= 参考资料: OI Wiki:前缀函数与KMP算法 OI Wiki:Z函数(扩展KMP) 0. 约定 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s0,s1,,s|s|1阅读全文
posted @ 2021-07-14 20:11 pjykk 阅读(609) 评论(0) 推荐(0) 编辑
摘要:0. 前言 前置知识:二叉查找树(BST)。 我们知道,BST 是会被恶意数据卡成O(n2)的。(如下图) 树变成了一条链,这很显然不是我们想要的,我们需要找到一种方法来让 BST 保持平衡。 于是我们就有了各式各样的平衡树,而在 OI 中应用最为广泛的就是 Splay 和 fhq_treap 阅读全文
posted @ 2021-07-12 21:50 pjykk 阅读(164) 评论(0) 推荐(0) 编辑
摘要:(水) 一般来说,我们使用BKDRhash还进行字符串的哈希操作。 具体地,我们将字符串看成一个大进制数,然后取模就行了。 code: int hash(string s) { int ans=0,l=s.length(); for(int i=0;i<l;i++)ans=(ans*base%mod 阅读全文
posted @ 2021-07-12 15:48 pjykk 阅读(49) 评论(0) 推荐(0) 编辑
摘要:树上的许多问题都可以用dfs序+线段树予以解决。 轻重链剖分是通过优化dfs的顺序,达到优化时间复杂度的目的。 它可以O(nlog2n)支持链上加,链上和还有O(nlogn)LCA,子树加,子树和。 前置知识:dfs序,树形dp,线段树,没了。 首先给出一些定义: 重儿子:子树大小最 阅读全文
posted @ 2021-07-12 12:42 pjykk 阅读(95) 评论(0) 推荐(0) 编辑
摘要:UVA11987(vjudge) 并查集神题。也是在这里头一次听说了并查集的删除操作。 题目大意: 要求支持3个操作: 合并x,y所在集合; 将x移到y所在集合; 查询x所在集合中元素的个数和元素的和。 如果只有1、3操作,那么这道题就是一道简单的并查集。 现在有了2操作,那么就需要 阅读全文
posted @ 2021-07-11 23:54 pjykk 阅读(103) 评论(0) 推荐(0) 编辑
摘要:## 1.图的存储与遍历 ```cpp //链式前向星存储 int cnt,h[maxn]; struct edge{int to,nxt,val;}e[maxm]; void addedge(int u,int v,int val) { e[++cnt]=(edge){v,h[u],val}; h 阅读全文
posted @ 2021-07-11 23:06 pjykk 阅读(45) 评论(0) 推荐(0) 编辑
摘要:字符串算法都好抽象啊…… 1. 字符串哈希 int hash(string s) { int ans=0,l=s.length(); for(int i=0;i<l;i++)ans=(ans*base%mod+(s[i]-'0'+1))%mod; return ans; } 2. 前缀函数 void 阅读全文
posted @ 2021-07-11 22:48 pjykk 阅读(73) 评论(0) 推荐(0) 编辑
摘要:感觉自己对这种数据结构理解的一直不是很好…… 于是就有了这一篇。相信所有人都能看懂( 符号约定: 对于队列,使用[表示队首,使用]表示队尾。 对于栈,使用<表示栈顶,使用]表示栈底。 1. 单调队列 1.1 什么是单调队列 顾名思义,“单调队列”就是队列内元素满足单调性的队列。 比如下面这三个队列: 阅读全文
posted @ 2021-07-10 22:57 pjykk 阅读(305) 评论(0) 推荐(0) 编辑
摘要:不包括字符串和图论内容。 代码压行警告qwq 如果存在与数据结构有关的经典算法,也会予以列出。 1. 单调队列 O(n) luoguP1886 单调队列和单调栈的讲解在这里 const int maxn=1000010; int n,k,cnt,a[maxn],minans[maxn],maxa 阅读全文
posted @ 2021-07-08 23:05 pjykk 阅读(97) 评论(0) 推荐(0) 编辑
摘要:-1. 本文章中所有函数原型均为C++98的标准。 没有 bitset。 通用的操作 //遍历容器——以vector,map为例 vector<int> vt; map<int,int> mp; for(vector<int>::iterator it=vt.begin();it!=vt.end() 阅读全文
posted @ 2021-07-07 23:14 pjykk 阅读(74) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示