随笔分类 - BZOJ&HDOJ
摘要:Description 【HAOI2008】硬币购物 给定4种硬币的价值。若干组询问,每次给出4种硬币的数量和要购买的花费,求恰好购买的方案数 Solution 背包dp计数+容斥 如果不考虑硬币数量的限制,那么这个问题就是完全背包方案数问题,一遍dp就可以解决 现在加上数量的限制,那么合法方案数就
阅读全文
摘要:Description 维护一个数列的如下操作: 在某个位置后插入一段数列 在某个位置后删除一段数列 将连续的一段数列修改为某个值 将一段数列翻转 求一段数列的和 求整个数列的最大子段和 Solution 魔鬼Splay题 用Splay维护序列,以下标为权值建树。 如果插入一段序列,我们就将这段序列
阅读全文
摘要:Description 给定一棵树,求它的最小点权覆盖集,其中允许强制某个点选或不选 Solution ddp用LCT维护 明确一个关系式:最小点权覆盖集=全集-最大点权独立集 那么n≤2000的暴力就很简单了,暴力修改,然后求最大点权独立集就好了(我在考场上就是这么写的) 关于正解,我采用的是动态
阅读全文
摘要:Description 给定$p$,求$2^{2^{2^{2^{2^{...}}}}}\mod p$的值,多组询问。 Solution 首先我们要知道欧拉定理的推论: 在b,p互质时,存在$a^b\equiv a^{b\mod \phi (p)}\pmod p$ 在b,p不互质且b>φ(p)时,存在
阅读全文
摘要:Description 给定一棵树,求每一个点能到达的最远的距离是多少 Solution 树形dp 我们利用“二次扫描与换根法”的思想,首先假定1节点为根,然后在这棵有根树上进行一次dp,求出从每一个节点出发在其子树内最远和次远距离,记为sum1,sum2 我们在定义ans[i]表示在当前这棵有根树
阅读全文
摘要:Description 给定$y, z, p$,求$x=y^{z} \mod p$或$xy\equiv z \pmod p$或$y^x\equiv z\pmod p$中x的值 Solution 第一个式子我们可以直接用快速幂求解答案。时间复杂度$O(log_{2}z)$ 第二个式子我们可以变形为$x
阅读全文
摘要:Description 给定n,m,求一个包含n个1,m个0,且任何前缀的1的数量必须大于0的数量的合法01串的数量,答案对20100403取模。 Solution 我们建立坐标系,定义x坐标为1和0的数量的和,y坐标表示1和0的数量的差,那么向右上走就表示选择1,向右下走就表示选择0。 如果不考虑
阅读全文
摘要: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
阅读全文
摘要:Description 两个物体在一个周长为l的环上同方向运动, A初始时位置为a,速度为m,B初始位置为b,速度为n,求何时相遇。 Solution 根据题意,我们不难列出方程,推导如下 $a+mt \equiv {b+nt} \pmod l$ $(m-n)t \equiv {b-a} \pmod
阅读全文
摘要:Description 给定一棵树和若干操作,每次可以选取树上任意两点之间的路径染成一种颜色,或是查询任意两点之间路径上有多少段颜色。 Solution 树链剖分不解释,主要分析线段树的维护,在线段树区间上我们维护区间左端的颜色、右端的颜色、整个区间颜色段的数量。那么当我们合并两个区间时,我们首先将
阅读全文
摘要:Description 给定一个01矩阵,求出最大的正方形子矩阵和最大长方形子矩阵,并保证取出的矩阵中的元素都为0/1 Solution 为了使题目变成上述表述的形式,我们首先将读入的矩阵的部分元素xor1,使其变成一般形式 之后,这道题变成了两道题的合体:洛谷P2701巨大的牛棚与P4147玉蟾宫
阅读全文