05 2018 档案
摘要:测试地址:森林 做法:本题需要用到树上主席树+启发式合并。 如果树的形态固定,那么求路径第k" role="presentation" style="position: relative;">kk大,我们想到用主席树。求区间的第k" role="presen...
阅读全文
摘要:测试地址:交换棋子 做法:本题需要使用费用流+拆点。 容易想到,把全部白色棋子都移动到目标位置的话,剩下的黑色棋子也自然都移动到目标位置了,因此我们只考虑白色棋子。又注意到一枚棋子的移动可以看成一份流量,这样问题就转化成了网络流问题,因此我们要考虑如何将题目...
阅读全文
摘要:测试地址:树 做法:本题需要用到主席树+LCA。 要求两点间的距离,显然要维护每个点的深度,以及要求两个点的LCA。 我们把一开始的树看成一块,然后每次操作,都是在某一块下面挂一个新的块,每个块都是模板树的一棵子树。这样我们可以先把块缩成点,那么缩块后整棵大...
阅读全文
摘要:测试地址:Counting Stars 题目大意:给一张无向图,其中一个子图被称为A形图,当且仅当其选出的4" role="presentation" style="position: relative;">44个点5" role="presentation...
阅读全文
摘要:测试地址:最大半连通子图 做法:本题需要用到SCC缩点+拓扑序DP。 乍一看这题好像没什么思路,但我们发现,如果一个点在一个最优的方案中,那么该点所在的强连通分量肯定也在这个方案中,不然就不是最优方案,因此我们先把强连通分量缩起来,这样我们就得到了一个DAG...
阅读全文
摘要:测试地址:Riddle 题目大意:n(≤106)" role="presentation" style="position: relative;">n(≤106)n(≤106)个城市被划分成k(≤n)" role="present...
阅读全文
摘要:测试地址:熟悉的文章 做法:本题需要用到广义SAM+二分+DP+单调队列。 首先,L" role="presentation" style="position: relative;">LL的性质显然是单调的,所以我们二分L" role="presentati...
阅读全文
摘要:测试地址:小Q的表格 做法:本题需要用到数论+分块。 这道题可真是个神题……之所以标题笼统地写了数论,是因为它用到的知识实在是有点多……这里给大家,也算给自己理一遍思路,以免忘了。 首先分析题目所给二元函数的条件: f(a,b)=f(b,a)" role="...
阅读全文
摘要:测试地址:守卫 做法:本题需要用到区间DP+优化。 看到数据范围,容易想到令f(l,r)" role="presentation" style="position: relative;">f(l,r)f(l,r)为区间[l,r]" role="present...
阅读全文
摘要:测试地址:游戏 做法:本题需要用到线性筛+组合计数。 首先我们知道,如果一个数在区间内没有除了它自己以外的因数,那么这个数就必须要取,不然不能满足所有数都被取过。再然后,如果一个数在区间内有除了它自己以外的因数,那它就没有必要取了,也就是说取这个数是多余的,...
阅读全文
摘要:测试地址:排序游戏 做法:本题需要用到贪心。 首先,期望轮数显然就等于所有不同排列的种数,而可重排列的数目是有公式的,假设一共有n" role="presentation" style="position: relative;">nn个元素,第i" role...
阅读全文
摘要:测试地址:成绩单 做法:本题需要用到区间DP。 容易想到每次取的都是一个子序列。直觉上想到的一个状态定义是,令f(i,j)" role="presentation" style="position: relative;">f(i,j)f(i,j)为删掉区间[...
阅读全文
摘要:测试地址:平方运算 题目大意:维护一个序列X" role="presentation" style="position: relative;">XX,再给定一个模数p" role="presentation" style="position: relativ...
阅读全文
摘要:测试地址:亚瑟王 做法:本题需要用到概率DP。 一开始本人是这样定义状态的:令f(i,j)" role="presentation" style="position: relative;">f(i,j)f(i,j)为第i" role="presentatio...
阅读全文
摘要:测试地址:等差数列 做法:本题需要用到差分+线段树。 我们发现等差数列这个东西非常难维护,于是我们将序列和修改全部差分,我们发现一个有趣的性质:等差数列的差分中各个数相等(其实是句废话)。最关键的是,我们把玄乎的修改操作变成了用三个区间加操作就能完成:从s&...
阅读全文
摘要:测试地址:方伯伯运椰子 做法:本题需要用到01分数规划+SPFA判负环。 我们先尝试找到另一种更好的描述压缩和扩容方案的方法,我们发现,实际上压缩就是在退流,扩容就是在增广,那么我们知道,要找到一种方法使得总流量不变,只需要沿着残余网络中的某一个环走就行了。...
阅读全文
摘要:测试地址:拦截导弹 做法:本题需要用到DP+CDQ分治。 很容易想到,先求出最长不上升子序列的数量,再对每个点进行判断,如果该点可能在最长不上升子序列中,就用包含它的最长不上升子序列数量除以方案总数得到概率。那么我们要求的就是以某枚导弹开头或者结尾的最长不上...
阅读全文
摘要:测试地址:假面 做法:本题需要用到概率DP。 首先,注意到血量很小,因此对于第一种操作,直接概率DP维护敌方单位在各个血量的概率即可,式子很简单相信大家都会,我就不写了,时间复杂度为O(Qm)" role="presentation" style="posi...
阅读全文
摘要:测试地址:混合果汁 做法:本题需要用到二分答案+主席树。 注意到,如果一个最小美味度为d" role="presentation" style="position: relative;">dd的混合果汁可以配出,那么最小美味度<d" role="pre...
阅读全文
摘要:测试地址:Meteors 题目大意:一个环上有m" role="presentation" style="position: relative;">mm个区域,有n" role="presentation" style="position: relative...
阅读全文
摘要:测试地址:吊打XXX 做法:本题需要用到模拟退火。 假设所有绳子的长度都相同,而且绳长都等于天花板到地面的高度,那么一个物品和地面的距离就等于绳结到对应的孔的距离。又因为重力势能和物品距地面的高度和物品本身的质量有关,而一个系统的总重力势能最小时,就是这个系...
阅读全文
摘要:测试地址:向量集 做法:本题需要用到线段树+凸包+二分。 首先恭喜一下自己达成BZOJ200AC……(突然想起,这不会有多少人看得见) 令询问的向量为(a,b)" role="presentation" style="position: relative;"...
阅读全文
摘要:测试地址:相逢是问候 做法:本题需要用到扩展欧拉定理+线段树。 我们知道在gcd(c,p)=1" role="presentation" style="position: relative;">gcd(c,p)=1gcd(c,p)=1时,有欧拉定理: cx&...
阅读全文
摘要:测试地址:开店 题目大意:给定一棵树,每个点有点权,每条边有长度,多次询问,每次询问给出三个数u,l,r" role="presentation" style="position: relative;">u,l,ru,l,r,问点权在[l,r]" role=...
阅读全文
摘要:测试地址:捉迷藏 做法:本题需要用到动态点分治+堆。 一棵树上有黑点和白点,求两个黑点之间的最远距离,如果没有修改,我们完全可以使用DP或者点分治的方法求出。现在的问题是带了修改,那么从DP的角度来考虑就比较难了,所以我们从点分治的角度考虑怎么拓展。 回顾点...
阅读全文
摘要:测试地址:向量 做法:本题需要用到裴蜀定理。 注意到题目中给的8" role="presentation" style="position: relative;">88个向量,实际上只有4" role="presentation" style="positi...
阅读全文
摘要:测试地址:整数 做法:本题需要用到线段树+压位。 首先考虑在某一位加1" role="presentation" style="position: relative;">11或减1" role="presentation" style="position: ...
阅读全文
摘要:测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组。 首先,我们发现每次拔高的区间都是一个后缀。这个自己画一画就大概能证出来了。 那么我们就有了一个状态定义:令f(i,j)" role="presentation" style="position...
阅读全文
摘要:测试地址:小星星 做法:本题需要用到树形DP+容斥原理。 我省省队队长Mychael曰:假紫题,水题。orz。 这题要求的是,对一棵树上每个点求一个映射,使得每一条树边在映射到一个图上后仍存在,求方案数。容易想到以下状态定义: 令dp(i,j,k)" rol...
阅读全文
摘要:测试地址:树状数组 做法:本题需要用到概率+二维线段树+动态开点。 首先分析题目,对树状数组结构熟悉的同学(不熟悉的话…画一画或者打个表也行)就能看出,题目中的数据结构求的是后缀和。那么当我们询问[l,r]" role="presentation" styl...
阅读全文
摘要:测试地址:围豆豆 做法:本题需要用到状压+BFS。 做不出神题的我,只能来做道水题泄愤了…… 这题显然可以状压,那么我们要求的就是可以将某个集合的豆子围起来的最短回路,于是我们枚举一个起点,令(x,y,s)" role="presentation" styl...
阅读全文
摘要:测试地址:树的计数 做法:本题需要用到概率期望+数学证明。 要求树的期望高度,我们知道树的BFS的层数就是它的高度,所以我们要对BFS序分层。但由于有DFS序的限制,我们需要更加深入地考虑DFS序对BFS序的限制。为了方便,我们把BFS序映射成1,..,n"...
阅读全文
摘要:测试地址:影魔 做法:本题需要用到线段树+离线。 首先你需要注意到,题目中所给的序列是一个全排列(没看到这个条件的我直接跪了)。然后我们转化题目中的限制条件,我们发现这个条件等价于:当ki,kj" role="presentation" style="pos...
阅读全文
摘要:测试地址:Rally 题目大意:一个n(≤5×105)" role="presentation" style="position: relative;">n(≤5×105)n(≤5×105)个点,m(≤106)" r...
阅读全文
摘要:测试地址:字符串 做法:本题需要用到后缀数组+二分+RMQ+主席树。 注意到要求s(a,b)" role="presentation" style="position: relative;">s(a,b)s(a,b)的每个子串和s(c,d)" role="p...
阅读全文
摘要:测试地址:建筑抢修 做法:本题需要用到贪心+堆。 首先,不难想到(实际上可能因为我太菜了我觉得很难)先修截止时间小的。但是直接这样贪心可以找到反例,我们需要找到更好的做法。 考虑一个建筑,如果当前可以修,那就直接修,如果不行,如果这个建筑修理时间比我们目前选...
阅读全文
摘要:测试地址:棋盘制作 做法:本题需要用到DP+悬线法。 对于第一问,令f(i,j)" role="presentation" style="position: relative;">f(i,j)f(i,j)为以(i,j)" role="presentation...
阅读全文
摘要:测试地址:游戏 做法:本题需要用到数论+背包DP。 注意到题目中所给的是一个置换,一个置换中会有若干个循环,而题目中的排数就是这些循环长度的LCM+1" role="presentation" style="position: relative;">+1+1...
阅读全文
摘要:测试地址:会议中心 做法:本题需要用到贪心+倍增+set。 如果这题单纯只求最多的线段数,相信大家都会贪心求了,但是鉴于我太弱今天才会,这里还是写一下吧。 把所有线段按左端点从小到大排序,按右端点为第二关键字从大到小排序,我们首先维护一个栈,是为了把所有包含...
阅读全文
摘要:测试地址:优秀的拆分 做法:本题需要用到后缀数组+RMQ+差分。 容易想到,令pre(i),nxt(i)" role="presentation" style="position: relative;">pre(i),nxt(i)pre(i),nxt(i)分...
阅读全文
摘要:测试地址:萌萌哒 做法:本题需要用到并查集+倍增。 容易想到用并查集来维护相等的集合,因为首位不能为0" role="presentation" style="position: relative;">00,所以令集合数为s" role="presentat...
阅读全文
摘要:测试地址:连通数 做法:本题需要用到SCC+DP+bitset。 看到和有向图的连通性有关就想到用SCC缩点,对于缩出来的DAG,一个直观的想法就是DP,大多数同学应该会马上想到这样的状态定义:令f(i)" role="presentation" style...
阅读全文
摘要:测试地址:单旋 做法:本题需要用到set+树状数组。 首先,我们注意到题目中单旋只涉及到最小值和最大值,考虑到旋转是对称的,我们先只考虑单旋最小值的情况。 显然目标点每次都是往右旋转,往右旋转对点的影响是:该点的右子树深度没有影响,该点深度减少1" role...
阅读全文
摘要:测试地址:蚯蚓排队 做法:本题需要用到链表+字符串哈希。 因为k" role="presentation" style="position: relative;">kk很小,所以用链表维护队列的形态,每次连接或断开暴力添加新增的子串信息即可,用字符串哈希来加...
阅读全文
摘要:测试地址:游戏 做法:本题需要用到2-SAT+枚举。 看到大部分的地图都只能用两种赛车,赛车之间有一些依赖关系,这显然就是个2-SAT。而对于极少数的能用三种赛车的地图,我们枚举这些地图是不用A还是不用B,这样可以保证不漏掉方案,对每种情况做2-SAT即可,...
阅读全文
摘要:测试地址:LIS 做法:本题需要用到最小割+贪心+退流。 如果仅仅是求最小代价,就是很经典的模型了,令f(i)" role="presentation" style="position: relative;">f(i)f(i)为以第i" role="pres...
阅读全文
摘要:测试地址:网络收费 做法:本题需要用到树形DP+状压DP。 因为成对的贡献比较难做,我们尝试把贡献算到每一个叶子节点上。我们发现按照题目中的收费方式,它等价于对于每棵子树,A和B哪个更少,就统计这样的贡献:对于每个这种用户i" role="presentat...
阅读全文
摘要:测试地址:循环之美 做法:本题需要用到杜教筛。 首先,思考一下纯循环小数这个条件有什么意义。注意到,如果一个数w" role="presentation" style="position: relative;">ww的循环节长度为x" role="prese...
阅读全文
摘要:测试地址:生成树计数 做法:本题需要用到连通性状压DP+矩阵加速。 假设图是从左到右不断添加点的,那么每添加一个点,影响到的只有最后k" role="presentation" style="position: relative;">kk个点的连通性,所以不...
阅读全文
摘要:测试地址:寿司晚宴 做法:本题需要用到状压DP+数论。 考虑n" role="presentation" style="position: relative;">nn小一点的情况,我们发现题目条件等价于两个人所选的数的质因子集合不相交,那么我们令f(i,j,...
阅读全文
摘要:测试地址:管道取珠 做法:本题需要用到DP+问题转化。 这道题最妙的地方在于对问题的转化。考虑∑ai2" role="presentation" style="position: relative;">∑a2i∑ai2的组合意义,我们发现它等价...
阅读全文
摘要:测试地址:Dig The Wells 题目大意:有n" role="presentation" style="position: relative;">nn个寺庙和m" role="presentation" style="position: relativ...
阅读全文
摘要:测试地址:宝藏 做法:本题需要用到状压DP。 令dp(i,j)" role="presentation" style="position: relative;">dp(i,j)dp(i,j)为深度为i" role="presentation" style="...
阅读全文
摘要:测试地址:无归岛 做法:本题需要用到圆方树+DP。 很显然题目中所给的图是一个仙人掌,那么这道题要求的就是仙人掌上的最大点权和独立集。 于是我们把仙人掌上的问题转化成圆方树上的问题。圆点上的DP很好处理,像树形DP一样处理即可,主要是方点上的DP,由于方点所...
阅读全文
摘要:测试地址:仙人掌图 做法:本题需要用到圆方树+DP+单调队列。 看到仙人掌就想到圆方树。我们可以把仙人掌上的DP转化为圆方树上的DP。 首先对于LCA在圆点上的点对,它们之间的距离可以直接通过圆方树的边权算出,所以这一部分直接用树上求直径的DP做就行了。 关...
阅读全文
摘要:测试地址:数字表格 做法:本题需要用到莫比乌斯反演+数论分块。 本题要求的是: ans=∏i=1n∏j=1mf(gcd(i,j))" role="presentation" style="position: relative;">...
阅读全文
摘要:测试地址:数表 做法:本题需要用到莫比乌斯反演+树状数组。 首先忽略a" role="presentation" style="position: relative;">aa的限制,我们要求的是: ans=∑i=1n∑j=1mD(...
阅读全文
摘要:测试地址:Kuglarz 做法:本题需要用到最小生成树。 看到上面大家肯定会非常疑惑,这个题目是怎么转化成最小生成树的呢?且听我慢慢道来。 我们尝试找到得到Ai" role="presentation" style="position: relative;"...
阅读全文
摘要:测试地址:选数 做法:本题需要用到数论+容斥。 首先把区间中所有能被k" role="presentation" style="position: relative;">kk整除的数拿出来,显然只有在这些数里面取才可能得到最大公因数k" role="pres...
阅读全文
摘要:测试地址:约数个数和 做法:本题需要用到莫比乌斯反演+数论分块。 首先,因为ij" role="presentation" style="position: relative;">ijij的每个因数都可以唯一表示成pjq" role="presentatio...
阅读全文
摘要:测试地址:排列 做法:本题需要用到贪心+堆+并查集。 观察题目中的条件,实际上就是指ai" role="presentation" style="position: relative;">aiai不能出现在i" role="presentation" sty...
阅读全文
摘要:测试地址:简单的数学题 做法:本题需要用到杜教筛+数论分块。 首先推式子,因为∑d|nφ(d)=n" role="presentation" style="position: relative;">∑d|nφ(d)=n∑d|nφ(...
阅读全文
摘要:测试地址:神犇和蒟蒻 做法:本题需要用到杜教筛。 啊,差不多一年没碰过这东西了,想当初学这个东西学出心理阴影了都……然而不能因为菜就停下自己的脚步,所以先做一道杜教筛基础题复健一下。 对于这道题目,第一问就是玩的,显然当i>1" role="prese...
阅读全文
摘要:测试地址:奇怪的背包 做法:本题需要用到裴蜀定理+DP。 首先考虑一件物品a" role="presentation" style="position: relative;">aa,我们发现axmodP" role="presentation" style=...
阅读全文
摘要:测试地址:道路 做法:本题需要用到树形DP。 去掉题目的各种包装,我们发现整棵树就是棵二叉树,城市就是非叶子节点,乡村是叶子节点。 看到这种树上最优化的问题,一般都会先想到树形DP。一个显然的思路是定义f(i)" role="presentation" st...
阅读全文
摘要:测试地址:排序 做法:本题需要用到二分答案+线段树。 看到在序列上做一些花里胡哨的操作,我们就想到用线段树,但是……这种操作好像根本做不了啊…… 这时我们发现了此题的一个重要条件:询问只有一次,并且在所有修改操作之后。也就是说,我们也许可以找到一个方法进行离...
阅读全文
摘要:测试地址:最小公倍数 做法:本题需要用到分块+并查集启发式合并。 脱去题目各种疑似数论的包装之后,我们发现实际上题目让你求的是:存不存在一条路径,使得路径上最大的a" role="presentation" style="position: relative...
阅读全文
摘要:测试地址:序列 做法:本题需要用到莫队算法+RMQ。 首先看到询问不强制在线,并且没有修改,显然非常莫队,那么就来到了这道题的难点:如何处理区间扩张或收缩时答案的变化。 我们发现往区间中增加或减少一个元素,实际上就是添加或减少以这个元素为开头或结尾的一些子段...
阅读全文
摘要:测试地址:求和 做法:本题需要用到第二类斯特林数+NTT。 从题目中给的递推式或者根据组合数学的知识,第二类斯特林数S(i,j)" role="presentation" style="position: relative;">S(i,j)S(i,j)的组合...
阅读全文
摘要:测试地址:染色 做法:本题需要用到容斥原理+NTT。 好吧,我承认以下的推导过程是借(chao)鉴(xi)这位大佬的,Orz。 要求恰有i(0≤i≤E,E=min(⌊nS⌋,m))" role="pre...
阅读全文

浙公网安备 33010602011771号