自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(173)
  • 收藏
  • 关注

原创 2020.12.02【NOIP提高A组】模拟

T1:先判断相邻的两行哪些串可以同时选,这个可以对上一行建trie,然后让下一行的每一个串在trie上走。判断出关系之后就可以直接dp了。T2:首先很容易想到矩阵乘法,不过时间复杂度是1024^3,所以要优化。考虑原来我们设的状态是g[i][j]表示从i状态转移到j状态的方案数,这样转移要1024^3。这时我们发现对于i^j相同的g[i][j]的值一定是相同的,因为它们的变化量相同。所以我们把状态改为g[i]表示变化量为i的方案数,转移方程即为g'[x^y]+=g[x]*g[y],这样.

2020-12-04 16:05:50 133

原创 2020.12.03【NOIP提高A组】模拟

T1:首先如果n和m不相等,那么在k=0的情况下答案为1,若k≠0则答案为0。考虑反证这个结论:如果存在一种方案,则袋鼠的总数目=k*n=k*m,但n和m不相等,所以不存在合法方案。然后考虑n=m的情况,设f[i]表示当前行的总和状态为i的方案数,每次枚举新的一行来转移,并且要保证这一行有k只袋鼠,而且i加上当前这一行之后的状态不能有任何一个位置的值超过k。我们可以递归枚举新的一行的状态,这样可以节省时间。i从小到大枚举即可。这样求出来的最终答案一定是由n行加起来得到的,因为n=m。T2:.

2020-12-03 21:48:44 156

原创 2020.12.01【NOIP提高A组】模拟

T1:这题是区间dp。设f[i][j]表示用i~j的元素构成一个合法的出栈序列的方案数。转移时我们可以枚举k(i<=k<=j),表示k为i~j中最后弹出的元素。那么容易发现i~k-1一定是在k+1~j之后弹出的。所以一个k合法的条件就是对于所有的限制x、y(i<=x,y<=j),不存在x=k或x在k+1~j中而y在i~k-1中。如果一个k是合法的,那么我们就可以用f[i][k-1]*f[k+1][j]转移到f[i][j]。至此这题就做完了。这题如果把dp状态设为处理好1~i的

2020-12-01 21:00:09 123

原创 2020.11.28【NOIP提高A组】模拟

T1:找规律可得当n较大时最优解为1234循环摆放,n较小时直接暴力。T2:首先可以枚举最小值,然后二分最多可以把a[i]的前几个放满,接着计算答案。然后猜测答案关于最小值的函数的一个单峰函数,所以可以不用枚举答案,直接三分即可。三分:设m1=l+(r-l)/3,m2=r-(r-l)/3。然后比较m1和m2两个点的优劣,若m1较劣,则l=m1,否则r=m2。T3:首先对于一条u~lca~v的路径,在u~lca上的点x是合法的等价于dep[u]-dep[x]=a[x],即dep..

2020-11-30 21:53:04 115

原创 2020.11.30【NOIP提高A组】模拟

T1:首先有一个结论:每次肯定都是把权值最大的点周围还没有删的边都删掉,这个很好证。然后可以把删边变成加边,接着用并查集维护;同时也可以直接用公式:ans=sum(a[i])-max(a[i])+sum(a[x[i]],a[y[i]])。这条公式的意义是除了最大值点之外的每一个点都会在作为某个最大值点被删之后某棵子树的最大值计算一次,这就是sum(a[i])-max(a[i]),而每次删去一条边还会计算一次这条边连接的两个点中权值较大的一个,这就是sum(a[x[i]],a[y[i]])。比赛时想到

2020-11-30 21:10:57 125

原创 2020.10.24【NOIP提高A组】模拟

T1:容易发现i和j数位上不能出现0。而每一位的乘积只会有2、3、5、7这几个质因数。所以我们可以用数位dp求出有多少个数满足2、3、5、7的质因子个数为c2、c3、c5、c7。(设为g[c2][c3][c5][c7])注意要开一维记录前导0的情况。然后我们对g做一遍四维后缀和,接着把g的每一个数平方,然后在四维差分回去,此时的g[c2][c3][c5][c7]就是gcd等于2^c2*3^c3*5^c5*7^c7的对数。证明就是平方的时候实际上算的就是gcd为当前g表示的数的倍数的情况,差分之后其实就只

2020-10-27 21:25:03 113

原创 2020.10.17【NOIP提高A组】模拟

T2:首先算出期望走ans步能暴击一次,那么答案就是1/ans。这是因为题目中可视为走了无限步之后的期望暴击次数。然后ans的计算还是很容易的,可以枚举i,算出第i步还没有暴击或者刚好在第i步暴击的概率,这样都可以计算ans。T4:这题比较巧妙。如果不存在一个k*k的合法正方形,那么先手必败。否则如果不存在两个不重叠的k*k的合法正方形,那么先手必胜。如果存在多余两个k*k的合法正方形,那么最后的局势必然是刚好只剩下两个k*k的合法正方形,然后那时的先手必败。在知道了这个结论之后,.

2020-10-21 20:15:40 63

原创 2020.09.19【省选组】模拟

T2:首先有一个结论,对于一个长为n的串,判断len是否合法的一个简便方法就是判断它的前n-len位和后n-len位是否一致,并且len|n。手玩一下可以发现如果前n-len位和后n-len位相同,那么可以通过每len位的相等来推出len是合法的。接着我们就可以通过哈希O(1)判断对于l、r和len是否合法,然后我们只需要提前预处理出1~n的约数,在询问时逐一枚举判断。不过这样会超时,而可以发现如果对于一个不合法的len,len的约数必定也不合法。所以我们可以先设ans=n,然后枚举ans的质因数p,若

2020-09-22 19:35:56 67

原创 2020.09.12【省选组】模拟

T1:首先如果这个串本身就不是回文串,那么答案就是1。这题可以通过各种方法发现答案要么是2,要么是-1。而且-1只有xxxxxx,xxxyxxx,xyxyxyxyx这三种情况。(第二种情况的意思是长度为奇数而且最中间的位置为y,其他都为x)这样这题就做完了。T2:网络流。首先建立S和T,中间一列n个点。首先每个点和S有流量为1的边,和T有-1边,表示如果割左边则该点选正,割右边则该点选负。然后对于每一个a|w[x]-w[y]|,我们可以发现如果x和y的正负性不相同则贡献为2a,否则贡献.

2020-09-17 21:19:54 80

原创 2020.09.05【省选组】模拟

T1:首先用tarjan求出所有的点双,然后建圆方树。具体的建法是将当前点双的割点作为父亲向一个新建的方点连边,然后方点在想点双中其他点连边。在建好圆方树之后我们就树形dp。设f[i]表示从i的子树到i的最长链的长度。对于每个x,如果x为圆点则像常规一样转移;若x为方点则要处理一下:把当前方点对应的点双中的点拉出来排成一列,然后复制一遍(处理环的情况)。接着我们枚举i、j(i<j),若j-i<=n/2则用f[i]+f[j]+j-i去更新ans。求f[x]类似。至此这道题就做完了。T.

2020-09-12 16:11:29 68

原创 2020.07.27【省选B组】模拟

T1:设f[u]表示从u走到根的最小花费。考虑从上往下转移,当我们要求一个u的f值时,一定是枚举一种过路劵i,然后从与u的距离小于等于k[i]的u的祖先中取min转移。而取min的过程可以用倍增优化。T2:对于左光标左侧和右光标右侧的字符我们可以用两个栈维护,而中间部分则用一个队列维护。在翻转时就对中间的队列打标记,而其他操作推一下就好了。T3:首先观察式子l-(T-t)^2,(l,t<=10^5)发现当两份作业的t只差小于sqrt(10^5)时l是不起作用的。于是我们先按照t、l..

2020-07-27 22:14:32 102

原创 2020.07.24【省选B组】模拟

今天的题都比较简单。T1:很容易想到状压dp。关键在于怎样判断用一个半径为r的圆是否能覆盖某个集合的点。其实这个也不难,我们可以暴力求出这些点两两间的最大距离,若maxdis<=2r则可以,否则不行。T2:设f(d)表示gcd为d的对数,g(d)表示gcd为d的倍数的对数。首先g(d)=(n/d)*(m/d)(要下取整)。而f(d)=g(d)-sum(f(id))(i>=2)。可以证明时间复杂度是对的。求出了f之后,用线段树维护答案即可。T3:首先求出任意一颗生成树,然后..

2020-07-24 19:37:03 195

原创 2020.07.23【省选B组】模拟

T1:首先可以构造出f的转移矩阵b。考虑如果只有一维那么答案就是f*(I+b+b^2...b^(x1-1))的第一位。接着如果有n维那么答案就是f*(I+b+...+b^(x1-1))*(I+b+...+b^(x2-1))*...*(I+b+...+b^(xn-1))的第一位。因为拆开后面的就相当于把第一维到第n维的坐标求和。至于矩阵乘法求前缀和可以参考7.16省选B组T3。T2:这题比较简单,但是我没有想出来。首先一个简单的想法就是枚举a的不同的两位,异或之后放入hash数组。接着枚举b的每.

2020-07-23 21:34:40 100

原创 2020.07.22【省选B组】模拟(李超树)

T1:这题比较简单。首先把所有串翻转,然后问题就变成了求公共前缀。接着可以建出trie,容易发现一个表示字符串的节点只能走到表示字符串的父亲、儿子和兄弟节点。这样就可以设f[x]表示从x下方走到x的最长路径。f[x]就等于x的儿子的最长路径加上x的儿子中能表示字符串的节点的个数。求答案时枚举x然后在儿子中选两条最长的链再加上儿子中能表示字符串的节点的个数就好了。T2:李超树模板题。因为询问的x0在1~100000中,所以我们只需要对这些点建线段树。线段树的每一个节点只能存放一条线段。对.

2020-07-22 21:59:58 140

原创 2020.07.20【省选B组】模拟

T1:题解待更新T2:首先p肯定全部分给流量最多的一条边,所以现在就是求流量最多的一条边的最小值。注意这个值可以是小数。接下来我们先算出最大流,然后就可以二分答案,限制每一条边的流量不能超过mid,在做一遍最大流。若最大流没有发生改变则当前mid是合法的。这样就做完这题了。T3:首先可以想到把x轴和y轴分开考虑。因为每一个数各个位置的乘积最终一定只包含2、3、5、7这四个质因子,所以我们可以先把1~n中只包含2、3、5、7质因子的数都筛选出来,这样的数不多。然后设num[i]..

2020-07-21 21:19:07 108

原创 2020.07.21【省选B组】模拟

T1:暴力枚举即可。其实矩阵应该全部要选,但是题目没有说清楚,所以我TLE80。T2:这题的正解也比较好想:首先用堆和链表维护处每一个加入的点的位置,然后离散化之后用树状数组维护即可。比赛时我犯了两个错误导致0分:第一没有将编号离散化,以后要注意一下每一个变量数据范围。第二在判断堆中不合法的区间时漏了几个条件,以后在写代码的时候还是要多在纸上画一画。T3:首先求一边费用流最优解,然后枚举对匹配,强制这对匹配不能选之后再做一遍费用流,若此时的最优解改变了那么这一对匹配就是必选的。总..

2020-07-21 16:21:35 96

原创 2020.07.18【省选B组】模拟

这套比赛很难,就改了一题。T1:首先离线用tarjan对于所有询问求一边LCA。接着我们设p[x]表示x向上跳不超过d长度时最远跳到的点。这个我们dfs一遍求。具体做法就是在dfs过程中用一个栈存根到当前点的路径。多余一个x,我们从p[fa[x]]开始往下枚举,找到第一个满足条件的点就把它设为p[x]。因为边权都为1/2,所以每次最多不会向下移动2次,所以这个方法的复杂度是O(n)的。求出了p[x]之后,我们就可以求答案了。我们把每一个询问挂在它的LCA上,然后运用类似于tarjan求LC.

2020-07-20 19:29:45 73

原创 2020.07.17【省选B组】模拟

T1:这题我们可以先算出(1,1)~(k,k)的矩阵的答案,然后每次暴力删除一列及加入一列,已达到移动矩阵的目的。在暴力删除和加入的过程中用树状数组维护答案的变化量,这个手推一下式子就行了。注意:1、为了保证时间复杂度,我们可以采用蛇形走位的方式来移动矩阵,这样就保证了复杂度是(n-k+1)*(m-k+1)*k*log。2、我们要先维护答案的一半,最后输出时乘2,这样在维护变化量时比较方便。T2:题解待更新。T3:首先有一个性质:对于两个子串,设他们的结尾位置为i、j(i<..

2020-07-20 19:19:55 95

原创 2020.07.16【省选B组】模拟

T1:这题是一道水题,但是我没有想出来。首先发现如果一个矩阵的(1,1)为1的话,那么先手可以先把(1,1)翻转,然后每次后手翻转另一个位置的时候,先手就可以翻转(1,1)。这样下来先手在这个矩阵是必胜的。反之,如果一个矩阵的(1,1)是0,那么先手是必败的。这样我们就可以知道一个矩阵的胜负状态。然后把所有矩阵的胜负状态异或起来就是总的胜负状态了。T2:这题是一个矩阵乘法。首先我们二分答案,设a[i]表示i号房间能走到的最高楼层。现在关键就是要求出对于mid的a数组,然后判断一下有没有&g.

2020-07-17 21:54:50 105

原创 6.15及6.16比赛总结

6.15比赛时得分不高。T1花了很多时间,但最后也只能得10分。T2连暴力都不会。T3其实部分分比较好拿,但是没有想到可以从大到小填数然后直接dp。以后比赛时要注意每题都要想一想,尽量多拿部分分。6.16今天的比赛稍微好一点。T1其实已经想到了正解,但是因为不知道对不对就只打了n^3的dp,没有加斜率优化,最后70分。T2暴力10分。T3因为知识点不清所以连暴力都没有打。其实最后还剩了一些时间,可以打一打T1的优化的,只要对拍过了就没问题。T3有白送的1分,但我没有看见。T3的.

2020-06-16 21:00:49 115

原创 2020.06.06【省选A组】模拟

首先这题可以通过推式子(考虑相邻两个位置的优劣情况)发现最优解应该是按照a/t从大到小的顺序来解题的。所以我们可以求出最优解的序列,现在要求的就是c的最大值。但这时我们会发现可能会有多个a/t相同的点,所以我们求出每一道题可能出现的最早和最晚的时间,这两个时间就等于这个点在a/t相同的这一块中排在最前和最后的时间。接下来我们把a从小到大排序,然后二分c,对于一个c,要满足对于每一个i(i<n)都有i的最大b值小于i+1的最小b值。因为如果这个不成立的话就一定会有一种排列顺序使得i和i+1之间出现矛

2020-06-06 21:00:30 205

原创 2020.05.20【省选B组】模拟

今天的题都比较巧妙。T1:首先我们设sum[i]表示前i个位置有多少个精灵,设p[i]=sum[i]-i。接着我们不难发现对于最小的一个p[m],一定不会存在有精灵从m走到m+1。证明:如果存在精灵从m走到m+1,那么一定存在一个位置x使得从x到m的精灵数大于从x到m的位置数,即sum[m]-sum[x-1]>m-(x-1),移项得sum[m]-m>sum[x-1]-(x-1),即p[m]>p[x-1]。这与p[m]最小矛盾,所以假设不成立,结论成立。有了这一条性质之后我.

2020-05-23 20:41:52 260

原创 2020.05.16【省选B组】模拟

T1:直接二分答案,然后用哈希判断答案是否合法。比赛时直接枚举了答案,于是就超时了。T2:很容易想到求出每一种颜色的最左和最右的位置,那么这一种颜色就是要覆盖从最左到最右这一个区间。在所有区间中不能有相交又不包含的,剩下的可以通过拓扑来求最优解。实现的时候可以先不管所有区间合不合法,先按照合法的情况做一遍,做的过程中模拟染色,最后判断一下染出的结果是否与给出的一致。建拓扑图和染色的过程可以用线段树来维护。T3:这题比较巧妙。首先我们从小到大枚举序列中的数,然后求出以当前这个数..

2020-05-18 20:41:28 130

原创 虚树

在处理一些要从一颗树上多次选出一些关键点的问题时,我们就要用到虚树。首先我们要对每一次的关键点建出虚树。所谓虚树就是只保留关键点和它们之间有用的lca的树,实际上就是把树缩小了。在对一次的关键点建树时,我们首先把关键点按dfs序从小到大排序,然后一个一个地加入关键点。这里我们要维护一个栈,根到当前关键点的一条路径。假设当前要加入的关键点为p,栈顶元素为d[t],那么我们求出p和d...

2020-01-18 22:22:04 92

原创 2020.01.16【省选组】模拟

这套比赛目前只改出一题。T1:首先我们发现对于k个关键点构成的一棵树,最有答案一定是2*sum-maxdis,其中sum表示所有边权的和,maxdis表示直径的长度。知道了这个之后我们就可以分两部分算答案。首先计算sum。我们枚举每一条边,然后计算这一条边可能出现在关键树上的方案数。设这条边的一侧有x个关键点,另一侧有y个关键点(显然x+y=m),那么这条边出现在关建树中的方案数就是...

2020-01-17 21:52:04 1739

原创 莫比乌斯反演

莫比乌斯反演其实套路挺多的.莫比乌斯函数首先我们要引入莫比乌斯函数.(i)=1、1(i=1)2、-1(i的每一个质因子的指数都为1)3、0(其他情况)我们有一种线性求的方法:mu[1]=1;for(i=2;i<=n;i++){ if(bz[i]==0){ss[0]++;ss[ss[0]]=i;mu[i]=-1;} for(j=1;j<=...

2019-12-17 18:41:16 110

原创 IOI2020第一轮选拔模拟7(莫比乌斯反演)

今天比赛是做的不太好,主要是T1的算法不会。T1:这是一道莫比乌斯反演。 ps:设p=dk这样直接枚举计算有50分。接下来我们把n/p和m/p相同的分一块,把a从小到大排序。每一次新增一个a产生影响的只有a的倍数。用树状数组维护每次查询n、m的时候就直接分块查询就好了,因为最多只有级别块。T2:题解待更新。T3:设,...

2019-12-14 19:18:22 143

原创 IOI2020第一轮选拔模拟6

今天的题都比较玄学。T1:首先我们把k个1之间的距离算出来,然后会发现它们一定是n/k或者n/k+1。否则的话如果我们移动了一个1之后,就会出现新的距离,这样就一定不能满足循环同构了。在知道了这个性质之后,我们将n/k记为0,n/k+1记为1。那么我们发现在一个在原串中交换10位置,就相当于将原来距离蔚n/k和n/k+1的变成n/k+1和n/k的,也就是说在新串上交换了10。这样我们...

2019-12-14 18:37:26 215

原创 IOI2020第一轮选拔模拟5

今天又是三道难题.T1:题解待更新T2:题解待更新T3:这是一道dp。设dp[i][j]表示用了i种物品构成的体积为j是否可行,其中j用bitset存。那么我们可以把所有物品种类按照v来分类。设s[v][k]表示在体积为v的物品中选出k种物品的最多选出的个数。s[v][k]就等于体积为v的c前k大的c的和。求出了s之后,我们就可以求dp了。先枚举v,再...

2019-12-11 20:11:05 174

原创 点分治

讲一讲点分治的基本运用,其实它也是一个优秀的暴力。点分治最常见的套路就是“求树中满足条件的点对的数目”,当然它也可以应用在一些玄学题目中。我们来看一道经典例题:jzoj1166. 树中点对距离这题的思想就是不断求出当前分治块的重心,然后算出经过重心的合法路径数,接着把重心断开,然后不断分治下去。这样就可以算出答案了。关键是怎样求经过当前重心的合法路径的数目。我们可以先暴力算出...

2019-12-10 19:53:53 109

原创 线性基

线性基是一种针对异或运算的工具。线性基的定义:对于一个序列,我们构造一个集合,使得序列中的每一个数都可以有集合中的一些数异或起来得到。构造方式for(i=1;i<=n;i++){ x=a[i]; for(j=len;j>=1;j--) if((x>>(j-1))%2==1) if(d[j]==0){d[j]=x;break;} el...

2019-12-09 20:43:21 88

原创 IOI2020第一轮选拔模拟4(线性基、点分治)

今天的题也很难,目前只改出了两题。T1:这题要用到一个叫线性基的工具。首先我们发现3^b给予我们一个贪心的思路:一定是要优先满足b较大的列。紧接着就有一个做法了:从大到小枚举b,判断计算当前b的最大贡献。如果b有+1而没有-1,那么就判断一下3^b是否可行。有-1而没有+1同理。注意有+1也有-1时两列都为0和两列都为1的情况是同理的,在这种情况下我们可以定义限制为两列异或起来的...

2019-12-09 19:25:16 167

原创 IOI2020第一轮选拔模拟3

到杭州学军中学集训的第一天。今天比赛当场只能打暴力,改题也只改了一题。(好难啊!!!)T1:首先我们把x轴上方的点向每一座墙的左右端点连射线,然后将这些射线能合并的合并(意思就是算出每一个x轴上方的点的被遮挡区间)。接着我们计算每一个x轴下方的点的答案。具体做法就是每次都枚举k座墙的左右端点,然后加上经过左端点的在当前点的左侧的射线的数量,减去经过右端点的在当前点的左侧的射线的数...

2019-12-09 19:14:27 255

原创 CSP-2019比赛总结

DAY0和往年一样,下午6点准时出发去学校。DAY1到了考场之后发现没有时间试机。吐槽一下监考员的书法,2与Z,1与l根本区分不开。密码输了几次才输对。过了5分钟才开始看题。首先浏览了一下三道题,然后一题一题想。T1很快想到了可以倒推。T2想到了链上的做法,就是维护一下每一个点前面第一个和它前缀和相等的点在哪里就好了。推广到树上,发现可以用桶维护相同的前缀和,...

2019-11-23 16:31:24 1386

原创 2019.11.11【NOIP提高组】模拟 A 组(长链剖分)

今天有点小失误,但是总体还行。T1:首先70分的O(n)dp很容易推出来:设f[i][0/1]表示长度为i的区间的根节点是否有选的最大匹配数,g[i][0/1]表示方案数。分类讨论转移即可。100分就是把用递归来实现dp,并且有哈希来记忆化。可以证明总的区间长度种数是logn级别的(还是要分类讨论)。总结:比赛时就算想不出正解也不要忘记打个水法来水分。T2:首...

2019-11-11 22:17:53 113

原创 克鲁斯卡尔重构树

补一补之前没有写的博客。克鲁斯卡尔重构树的构建方法如下:每次合并x和y时,新建一个节点z,把x和y都连向z,并将x-y的边权l等信息赋值在z的点权上。这样做的好处是我们每次找一个范围内的点是,实质上就是在找某棵子树。注意点的一些值是随祖孙关系有单调性的。...

2019-11-10 22:20:41 205

原创 2019.11.10上午【NOIP提高组】模拟 A 组

今天的当场得分还不错。T1:这题较为简单。设f[i][j]表示第i支队伍到达第j个点的概率,这个可以SPFA来转移。接着设g[i][j]表示第i股势力到达第j个点的概率,这个我们可以用1减去第i股势力都不到达j点的概率的乘积。然后我们就求每一个点发生冲突的概率,这个又可以用1减去只有一股势力或者没有势力到达这个点的概率。这样这道题就做出来了。T2:首先建立超级源...

2019-11-10 22:07:35 71

原创 O(n)求逆元

求1~n在模M的意义下的逆元有一种O(n)的方法:inv[i]=(M-M/i)*inv[M%i]%M证明如下:设t=M/i, k=M%i(注意t是下取整)则两边同时除以k*i得在把t=M/i、k=M%i带入就得到了inv[i]=(M-M/i)*inv[M%i]%M。初始值为inv[1]=1。注意这里的M只能是质数,因为要同时除以k*i。若M不是质数,那么必...

2019-11-09 20:31:31 388

原创 2019.11.08【NOIP提高组】模拟 A 组

今天的比赛终于没有那么难看了,但还是有一些值得改进的地方。T1:这时一道水题,但是我想复杂了。首先我们把所有点按y从大到小排序,然后对于每一个点我们只需要考虑哪些y值比它的的就行了。我们枚举每一个点,然后把它当做原点,接着把y值比它大的点按极角排序,最后用叉积来算三角形的面积即可。这里可以用前缀和优化成O(n^2)的。总结:1、这一类计算几何一般要想到极角排序和...

2019-11-08 21:02:29 114

原创 tarjan总结

今天学了一下tarjan的几种常见应用,发现我还是有很多知识盲点的。有向图的强连通分量这是最简单的应用,关键就是:1、若dfn[y]=0,则dfs(y),low[x]=min(low[x],low[y])2、否则,若y在栈中,则low[x]=min(low[x],dfn[y])。这是为了防止搜到别的分量中去。代码如下:int dfs(int z){ int i;...

2019-11-06 22:31:56 269

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除