07 2019 档案
摘要:Description 设计一种数据结构,支持给指定点插入元素并覆盖先前的元素、查询某一点的排名、输出从任意排名之后的10名。 Solution 采用Splay实现 关于读入的字符串,我们可以哈希然后将哈希值丢到map里,这样就可以给每一个字符串一个编号,方便在Splay上操作。 关于插入和删除以及
阅读全文
摘要:Description 维护一种数据结构,并支持区间翻转、区间加、查询区间最大的操作 Solution Splay模板题,以序列中每个元素的下标为权值建立平衡树,维护两个标记:区间翻转和区间加标记,标记下传可以仿照线段树。 剩下的就是模板了 Code 1 #include <bits/stdc++.
阅读全文
摘要:Description 设计一种数据结构,支持元素的插入,查询当前元素的中位数 Solution 为了练习Splay,我决定用牛刀杀鸡,用Splay解决对顶堆的问题。 然后这就是一道Splay的模板题(简化简化再简化) Code 1 #include <bits/stdc++.h> 2 using
阅读全文
摘要:普通平衡树 Description 设计一种数据结构,支持插入元素,删除元素,查询值为val的元素的排名,查询排名为rnk的值,查询x的前驱、后驱 Solution Splay的基本操作,熟悉一下Splay,这些操作事实上与Treap也能解决。 为了实现Splay,我们有如下定义及实现方法。 1.定
阅读全文
摘要:Description 给定若干模式串组成的文本串,求每个模式串出现的次数。 Solution 由于模式串可能重复,所以直接按照AC自动机的模板会出错,所以我们定义一个same数组,end数组只记录最早的编号,每次如果要覆盖,便把令该节点的same值为这个位置上的end的值,查询一遍,输出答案就输出
阅读全文
摘要:Description 给定若干模式串,求是否存在一个无限长的文本串使得所有模式串均不能在此文本串中匹配。 Solution 这是一道AC自动机的变式,我们首先将这些模式串在Trie树上存储,以便AC自动机的操作。 我们这样思考:在我们存储Trie时,我们将每一个串的末尾标记一下,表示这是一个模式串
阅读全文
摘要:Description 给定n个模式串和m个文本串,对于每个文本串,求出这个文本串在模式串中最大匹配长度。 Solution 我们采用AC自动机求解。 首先构建自动机,在Trie上保存模式串,之后通过bfs求出失配数组(AC自动机的模板操作),之后处理匹配操作。 这里的一个难点就是我们需要记录最大的
阅读全文
摘要:Description 给定n,k,求$\sum\limits_{i=1}^{n}(k\ mod\ i)$的值 Solution 这是一道整除分块的模板题。 我们将mod运算拆开,得到$ans=n\times k-\sum\limits_{i=1}^{n}(\lfloor\frac{k}{i}\rf
阅读全文
摘要:Description 给定n,m,求 $\sum\limits_{i=1}^{n} \! \sum\limits_{j=1}^m[i\neq j](n\ mod \ i)(m \ mod \ j)\mod 19940417$的值 Solution 我们先求出$\sum\limits_{i=1}^{
阅读全文
摘要:Description 给定n,k,求 $(\sum\limits_{i=0}^{k}{C_n^i})\ mod\ 2333$ Solution 首先,我们要用到卢卡斯定理:$$C_n^m\ mod\ p=C_{n/p}^{m/p}*C_{n\ mod\ p}^{m\ mod\ p}\ mod\ p
阅读全文
摘要:模板题在这里 卢卡斯定理适用于求解组合数取模,而且模数为质数且不大的情况。 具体地,卢卡斯定理可以这样表示 $$C_n^m\mod p=C_{n/p}^{m/p}*C_{n\mod p}^{m\mod p}\mod p$$ 我们首先预处理出一个阶乘数组,一个mod p的逆元数组,当数值较小时,我们可
阅读全文
摘要:Description 两个物体在一个周长为l的环上同方向运动, A初始时位置为a,速度为m,B初始位置为b,速度为n,求何时相遇。 Solution 根据题意,我们不难列出方程,推导如下 $a+mt \equiv {b+nt} \pmod l$ $(m-n)t \equiv {b-a} \pmod
阅读全文
摘要:day0 一个半小时的车程就赶到了山东外国语职业技术学院,令我有点惊讶。 嗯……这个学校景色不错,校园很大,宿舍里配置挺高,四人间有电有空调。 中午被鸽王aiwacao放了鸽子不爽,下午和dy,myj,lmr几个人一起玩,陪bmf,xst玩钢琴块被虐的好惨。 晚饭后和dy,why散步,这个学校的饭菜
阅读全文
摘要:Description 给定一张无向图,求两点之间次短路的长度 Solution 关于用A*算法求解k短路,在此不再赘述,相关内容请见这里。 这里主要讲述一个坑点,本题是无向图(与POJ2449不同),我们在A*扩展节点时需要标记该节点是否已经在当前这条路径上,否则,我们求出的次短路是不正确的,排除
阅读全文
摘要:Description 给定一棵树和若干操作,每次可以选取树上任意两点之间的路径染成一种颜色,或是查询任意两点之间路径上有多少段颜色。 Solution 树链剖分不解释,主要分析线段树的维护,在线段树区间上我们维护区间左端的颜色、右端的颜色、整个区间颜色段的数量。那么当我们合并两个区间时,我们首先将
阅读全文
摘要:Description 给定一个01矩阵,求出最大的正方形子矩阵和最大长方形子矩阵,并保证取出的矩阵中的元素都为0/1 Solution 为了使题目变成上述表述的形式,我们首先将读入的矩阵的部分元素xor1,使其变成一般形式 之后,这道题变成了两道题的合体:洛谷P2701巨大的牛棚与P4147玉蟾宫
阅读全文
摘要:Description 给定一个棋盘, 在棋盘上放入m个炮,使得炮两两之间不能攻击,求出方案数。 Solution 考虑设计一个dp,定义f[i][j][k]表示前i行、有j列放了一个炮、有k列放了两个炮的方案数。 有一个显然的结论:如果方案合法,那么任何一行(列)的炮的数量最多为2。 然后我们思考
阅读全文
摘要:Description Treap是一种简单的平衡树,可以实现插入元素,删除元素,求元素的排名,求排名为某某的元素,查询前驱后驱 treap的本质是一棵二叉搜索树。然而,二叉搜索树很容易使复杂度退化,所以我们在每个节点上产生一个随机值,按照堆的性质维护,这样treap的深度期望为logn。 在本题中
阅读全文
摘要:Description Solution 每个人能看到的动物只有5个,所以我们可以将这个进行状压,定义f[i][j]表示从第i开始的五个动物状态压缩后(移走或不移走)为j的最优结果 那么转移方程可以得到 其中,val表示这一步转移所获得的收益,由于动物园是环形的,所以初状态等于末状态,我们枚举末状态
阅读全文
摘要:这是一道树形dp和状压dp结合的题目,思考量和代码细节都不少。 我们首先定义f[i][j]表示在以i为根的子树当中,建立分部的节点状压之后为j的最大收益 那么转移是显然的,定义k为i的儿子,那么f[i][j] = max(f[k][l] + f[i][j ^ l] + val). 其中val表示其他
阅读全文

浙公网安备 33010602011771号