随笔分类 - OJ—bzoj
摘要:5329: [Sdoi2018]战略游戏 链接 分析: 建出圆方树,那么求的就是点集中所有点的构成的联通块的圆点的个数,然后转化为路径和+[根节点为圆点]。 按照dfs序排序,然后答案等于相邻两个点之间的路径和,除以2。 代码: #include<cstdio> #include<algorithm
阅读全文
摘要:3689: 异或之 链接 分析: 01trie+堆。 首先考虑如何去一个数与其它数异或后的第k大,建出01trie,然后在trie上走,如果可以往小的边走,就往小的边走,否则往大的边。每个点记录下size,有多少个数。 查询一下每个数异或后最小的数,加入到堆中,不断删除最小的,加入与它异或下一小的。
阅读全文
摘要:3513: [MUTC2013]idiots 链接 分析: 考虑求不合法的方案数,可以枚举一条最大的边,另外两条边要求长度和小于等于这条边。 设dp[i]表示任选两条,长度为和为i的方案数,这是一个卷积,FFT优化。然后维护一个前缀和。 代码: #include<cstdio> #include<a
阅读全文
摘要:4358: permu 链接 分析: 不删除的莫队+可撤销的并查集。 每次询问先固定左端点到一个块内,然后将这些右端点从小到大排序,然后询问的过程中,右端点不断往右走,左端点可能会撤销,但是移动区间不超过$\sqrt n$个,用带撤销的并查集维护。 复杂度$O(n \sqrt n log n)$ 代
阅读全文
摘要:3730: 震波 链接 分析: 动态点分治。 求距离小于等于k的点权和。 建出点分树,然后对于每个分治中心,维护连通块到这个点的所有距离,因为要容斥掉多计算的,所以在维护这个点到这个分治中心在点分树的父节点的距离。 动态开点线段树,下标为距离,记录权值和。 空间复杂福:$nlog^2n$,时间复杂度
阅读全文
摘要:1095: [ZJOI2007]Hide 捉迷藏 链接 分析: 动态点分治。Qtree4没过。。。 先建出点分树,然后每个点维护两个堆,一个h1表示当前根的连通块内,所有点到点分树上父节点的距离,h2表示当前根的所有子节点的h1的最大值。 更新的时候,深度是log的,暴力修改堆中的元素即可。 代码:
阅读全文
摘要:4556: [Tjoi2016&Heoi2016]字符串 链接 分析: 首先可以二分这个长度。此时需要判断是否存在一个以b结尾的前缀,满足与[c,d]的lcp大于等于mid。 如果我们把串翻转,那么就是判断是否存在一个以b开始的后缀,这样可以建出SAM,线段树维护每个点的right集合。此时在从包含
阅读全文
摘要:4553: [Tjoi2016&Heoi2016]序列 链接 分析: 注意所有m此操作中,只会发生一个,于是考虑dp。dp[i]=dp[j]+1,j<i,a[j]<=L[i],R[j]<=a[i]。L[i]为位置i处,所有可能发生的改变中的最小值,R[i]为最大值。 这是三维偏序问题,于是CDQ+树
阅读全文
摘要:3931: [CQOI2015]网络吞吐量 链接 分析: 跑一遍dijkstra,加入可以存在于最短路中的点,拆点最大流。 代码:
阅读全文
摘要:4552: [Tjoi2016&Heoi2016]排序 链接 分析: 因为只询问一次,所以考虑二分这个数。显然是没有单调性的,但是我们可以二分所有大于等于mid的数中,是否有满足条件的x(而不是之间判断mid是否满足条件)。 那么将大于等于mid的数设为1,小于mid的数设为0,此时对区间排序就变得
阅读全文
摘要:3530: [Sdoi2014]数数 链接 分析: 对给定的串建立AC自动机,然后数位dp。数位dp的过程中,记录当前在AC自动机的哪个点上,保证不能走到出现了给定串的点。 代码:
阅读全文
摘要:5322: [Jxoi2018]排序问题 链接 分析: 每次选一个出现次数最小的。 代码:
阅读全文
摘要:4539: [Hnoi2016]树 链接 分析: 主席树+倍增。 代码:
阅读全文
摘要:3992: [SDOI2015]序列统计 链接 分析: 给定一个集和s,求多少个长度为n的序列,满足序列中每个数都属于s,并且所有数的乘积模m等于x。 设$f=\sum\limits_{i=0}^{n - 1} a_i x ^ i \ \ 如果集合中存在i,a_i = 1$ 那么答案的生成函数为f自
阅读全文
摘要:4025: 二分图 链接 分析: 线段树分治+并查集。 以时间为下标建立一颗线段树,对于每条边u,v,l,r,在期出现的时间[l,r]的时间上打标记,表示时间[l,r]存在这条边,那么在线段树上递归到叶子结点,就是每个时刻所有出现的边。 从根节点出发,把所有的边加入,并查集维护是否合法,如果到叶子结
阅读全文
摘要:4569: [Scoi2016]萌萌哒 链接 分析: 每次给出的两个区间长度是一样的,对应位置的数字也是一样的,那么可以将两两对应的数字用并查集合并,设最后有$cnt$个不同的集合,答案就是$9\times 10 ^{cnt-1}$,第一个数不能是0。 暴力合并太慢了,考虑优化。对于一段区间,用倍增
阅读全文
摘要:1433: [ZJOI2009]假期的宿舍 链接 分析: 直接网络流,看是否满足即可。 S向每个有需要的人连边,有床的向T连边,认识的人之间互相连边。 代码:
阅读全文
摘要:5308: [Zjoi2018]胖 链接 分析: 题目转化为一个点可以更新多少个点,一个点可以更新的点一定是一个区间,考虑二分左右端点确定这个区间。 设当前点是x,向右二分一个点y,如果x可以更新到y,那么在x~y之间的所有关键点(存在宫殿往这边的点)到y的距离小于x到y的距离,以及y~2*y-x之
阅读全文
摘要:1797: [Ahoi2009]Mincut 最小割 链接 分析: 题意为:问一条边是否可能存在于最小割中,是否一定存在于最小割中。 首先最小割的边一定是满流的边。且这条边点两个端点u.v中,至少一个与S或T联通。而且在残量网络中u->v没有增广路。如果存在增广路,那么会使最小割的增加。这条增广路会
阅读全文
摘要:4537: [Hnoi2016]最小公倍数 链接 题意: 一张无向图,每条边有两个权值(a,b),多次询问是否存在一条从x到y的路径,使得路径上的最大值a和最大的b是给定的,路径可以不是简单路径。 分析: 考虑一次询问如何做,可以将所有小于等于a并且小于等b的边加入,并查集维护每个联通块的最大的a和
阅读全文

浙公网安备 33010602011771号