随笔分类 -  BZOJ题解

摘要:题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那么查询我们直接在第i棵主席树里查第k大即可 注意: 1.主席树里面要维护两个值,一个是值落在区间[l 阅读全文
posted @ 2019-05-12 11:51 birchtree 阅读(140) 评论(0) 推荐(0)
摘要:题面 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 分析 第i棵主席树存储dfs序(dfn)为i的节点到根的链上序列,按dfn更新 查询用 阅读全文
posted @ 2019-05-12 11:50 birchtree 阅读(192) 评论(0) 推荐(0)
摘要:题面 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。 阅读全文
posted @ 2019-05-06 22:20 birchtree 阅读(166) 评论(0) 推荐(0)
摘要:题面 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤[1..10^9];Xi,Yi∈整数.当满足下列两个条件之一,两只奶牛i和j是属于同一个群的: 1.两只 阅读全文
posted @ 2019-05-06 22:10 birchtree 阅读(210) 评论(0) 推荐(0)
摘要:题面 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N 1条道路,并且任何两个村庄之间有且仅有一条路径可达。游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可以任意在地图的道路上行走,若走到某个村庄中有宝物,则视为找到该村庄内的宝物,直到找到所有宝物并返回到最初转移到的村庄为 阅读全文
posted @ 2019-05-06 21:56 birchtree 阅读(188) 评论(0) 推荐(0)
摘要:题面 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道。 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上。 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 a,b 的最短路径。 现在国家有很多个计划,每个计划都是这样,我们选中了 k 个点,然后在它们两两之间 阅读全文
posted @ 2019-03-21 15:17 birchtree 阅读(279) 评论(0) 推荐(0)
摘要:题面 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池。 这 n 个城池用 1 到 n 的整数表示。除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖, 其中 fi include include include include define maxn 300005 u 阅读全文
posted @ 2019-03-20 22:09 birchtree 阅读(127) 评论(0) 推荐(0)
摘要:题面 若一个大于 11 的整数M分解质因数后到的 有重复的质因数序列 有k 项,其最大的质因子为 $a_k$,并且满足 ${a_k}^k \leq N,k include include include include define maxn 1005 using namespace std; lo 阅读全文
posted @ 2019-03-20 22:02 birchtree 阅读(157) 评论(0) 推荐(0)
摘要:题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们。 攻击方法是:对于每个炮塔,游戏系统已经给出它可以瞄准的方向(上下左右其中一个),Nick需要选择它的攻击位置,每一个 阅读全文
posted @ 2019-03-20 21:46 birchtree 阅读(399) 评论(0) 推荐(0)
摘要:题面 "传送门" 给定序列d和lim。假设有一个初始价值$x_0$,则经历第i天后价值变为$min(x_0+d[i],lim[i])$,记$f(i,j,x_0)$表示以初始代价x0依次经过第i天到第j天后的价值。每次询问给出$l,r,x0$,求$max(f(i,j,x_0))$,其中[i,j]是子串 阅读全文
posted @ 2019-02-28 13:24 birchtree 阅读(412) 评论(0) 推荐(1)
摘要:题面 "luogu传送门" .gif) .gif) .gif) .gif) 分析 先分块,设块大小为x(之后我们会证明块大小取何值会更优) 步骤1 把所有的数离散化,然后对每个值开一个vector pos[i],pos[i]存储数i出现的位置 我们设查询的区间为[l,r],需要求数v出现的次数,然后 阅读全文
posted @ 2019-02-21 16:56 birchtree 阅读(212) 评论(0) 推荐(0)
摘要:题面 "传送门" 分析 显然,如果不加边,每条边都要走2次,总答案为2(n 1) 考虑k=1的朴素情况: 加一条边(a,b),这条边和树上a b的路径形成一个环,这个环上的边只需要走一遍,所以答案会减少dist(a,b) 1 (a b的路径少走一边,但是又多加了一条边,最终答案为2 (n 1) di 阅读全文
posted @ 2018-12-29 21:34 birchtree 阅读(282) 评论(0) 推荐(0)
摘要:题面 "传送门" 分析 根据贪心的思想我们得到几条性质: 1.生成树上的边权减小,非树边的边权增加 2.每条边最多被修改一次 设改变量的绝对值为d 对于一条非树边$j:(u,v)$,树上u v的路径上的任意一条边i的边权$w_i\leq j$,否则把i替换成j可以得到一棵更小的生成树 因此有$w_i 阅读全文
posted @ 2018-12-27 21:51 birchtree 阅读(215) 评论(0) 推荐(0)
摘要:Meet in the Middle 总结 1.算法模型 1.1 Meet in the Middle算法的适用范围 如果将搜索的路径看成一个有向图,Meet in the Middle 算法适用于求有向图上从A到B,且长度为L的路径数。 换句话说,Meet in the Middle 算法适用于求 阅读全文
posted @ 2018-12-17 19:36 birchtree 阅读(3226) 评论(0) 推荐(2)
摘要:题面 "传送门" 分析 分三维考虑 对第一维,直接排序 对第二维和第三维,我们这样考虑 朴素的方法是建k棵Treap,第i棵Treap里存第二维值为k的第三维数值 每次查询一组(a,b,c),只要在1~b的Treap里查询 include include include include includ 阅读全文
posted @ 2018-11-29 20:08 birchtree 阅读(210) 评论(0) 推荐(0)
摘要:题面 "传送门" 分析 语文题,主要是如何理解最小波动值 设当前天的营业额为x,则最小波动值为min(x 最大的=x的数 x) 然后用Treap维护序列就可以了 时间复杂度 $ O(n \log n) $ 代码 cpp include include include include include 阅读全文
posted @ 2018-11-29 19:47 birchtree 阅读(209) 评论(0) 推荐(0)
摘要:题面 "传送门" 分析 用Tarjan求出割点,对点 双连通分量(v DCC)进行缩点,图会变成一棵树 注意v DCC的缩点和e DCC不同,因为一个割点可能属于多个v DCC 设图中共有p个割点和t个v DCC,我们建立一张包含p+t个点的新图,并将每个割点和包含它的所有v DCC连边 缩点后原图 阅读全文
posted @ 2018-11-06 16:52 birchtree 阅读(281) 评论(0) 推荐(0)
摘要:题面 "传送门" 分析 由于一个点可以经过多次,显然每个环都会被走一遍。 考虑缩点,将每个强连通分量缩成一个点,点权为联通分量上的所有点之和 缩点后的图是一个有向无环图(DAG) 可拓扑排序,按照拓扑序进行DP 子状态:$dp[i]$表示以i结尾的路径的最大权值和 状态转移方程 $dp[y]=max 阅读全文
posted @ 2018-11-02 08:37 birchtree 阅读(237) 评论(0) 推荐(0)
摘要:题面 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。 你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么v_i v_j。 请计算可选的最多的点数,注意这些点不必形成这棵树的 阅读全文
posted @ 2018-10-27 19:14 birchtree 阅读(1015) 评论(0) 推荐(0)
摘要:题面 给定一个多边形,求对称轴数量。 分析 初看这似乎是一道计算几何的题目,但是如果暴力枚举对称轴,再去判断对称轴两边的边和角是否相等,时间复杂度为$O(n^2)$,显然会TLE 问题转换 顺时针转一圈,将角和边的值连在一起就得到了一个环 假如有一个边长为1的三角形,则它的角和边序列应该是:$ 1, 阅读全文
posted @ 2018-10-27 15:45 birchtree 阅读(294) 评论(0) 推荐(0)