摘要:
Miller-Rabin素性测试算法: 根据费马小定理当p为素数时成立,所以如果存在一个a使x不满足此定理,则x必然不为素数。 但这是充分条件而不是必要条件,所以对于每个a,可能存在满足定理的x,这时就要选取多个a同时检测,这种验证素性的方法即为Miller-Rabin算法。 当a取2,3,5,7时 阅读全文
摘要:
题意:n个点的图,点i和[l[i],i)的所有点连双向边。每次询问(l,r,x)表示x到[l,r]的所有点的最短路径长度和。 首先这题显然可以线段树优化建图,但是需要比较好的常数才能通过45分,还需要发掘性质。 先不考虑往右走的情况,对于一个点x,每个点i与x的最短距离一定形成一个个连续区间,即:设 阅读全文
摘要:
给定一个01?串,对所有len询问是否存在一种填法使存在长度为len的border。 首先有个套路的性质:对于一个长度为len的border,这个字符串一定有长度为n-len的循环节(最后可以不完整)。 逆推得到,如果有一个0位置和一个1位置之差为len,则所有len的因数k的n-k都不可能成为bo 阅读全文
摘要:
题意:求一个序列随机打乱后最大前缀和的期望。 考场上发现不管怎么设状态都写不出来,实际上只要稍微转换一下就好了。 一个前缀[1..k]是最大前缀,当且仅当前面的所有后缀[k-1,k],[k-2,k],...,[1,k]都大于0,后面的所有前缀[k+1,k+2],[k+1,k+3],...,[k+1, 阅读全文
摘要:
题意:给你n个圆,每次选择半径最大的,将它和与它相交的圆全部删去,输出每个圆是在哪次被删的。 KD树模板题。用一个矩形框住这个圆,就可以直接剪枝了。为了防止被卡可以将点旋转一个角度,为了保险还可以多转几个角度。 阅读全文
摘要:
其实这个题第一反应一定是线段树分治,但是这样反而更难考虑了(实际上是可做的但很难想到),可见即使看上去最贴切的算法也未必能有效果。 考虑这个DS题,没有什么模型的转化,可能用到的无非就是线段树、平衡树和堆。 首先,显然地,将每个商店拆成出现和消失两个事件,然后按时间一次处理。接下来很容易想到二分,于 阅读全文
摘要:
题意:一张无向图,每次给出一个点集,问有多少个点满足删去它后,存在点集中的两个点不连通。 算法:显然的圆方树+虚树。 建出圆方树后,答案就是所有关键点之间的路径上的圆点个数,这个直接用虚树,维护树上前缀和与右链即可。 虚树一万年不会建。。 阅读全文
摘要:
题意:求仙人掌图直径。 算法:建出仙人掌圆方树,对于圆点直接做普通的树上DP(忽略方点儿子),方点做环上DP并将值直接赋给父亲。 建图时有一个很好的性质,就是一个方点在邻接表里的点的顺序正好就是从环的根开始的整个环的点的顺序,所以可以直接DP。 阅读全文
摘要:
题意:仙人掌图最短路。 算法:圆方树DP,$O(n\log n+Q\log n)$ 首先建出仙人掌圆方树(与点双圆方树的区别在于直接连割边,也就是存在圆圆边),然后考虑点u-v的最短路径,显然就是:在圆方树上u-v的路径上的所有边权之和,加上每个环(方点)中连出去的两个点的最短距离。 现在问题就是: 阅读全文
摘要:
题意:给出一张图,求满足存在一条从u到v的长度大于3的简单路径的有序点对(u,v)个数。 做了上一题[HDU5739]Fantasia(点双连通分量+DP),这个题就是一个NOIP题了。 一开始考虑了各种各样的情况,最后发现几乎没有什么特殊情况,程序很优美。 首先和上一题一样建出圆方树,然后如果选择 阅读全文