摘要: 扫描线算是线段树的一个比较特殊的用法,虽然NOIP不一定会考,但是学学还是有用的,况且也不是很难理解。 以前学过一点,不是很透,今天算是搞懂了。 就以这道题为例吧:嘟嘟嘟 题目的意思是在一个二维坐标系中给了很多矩形,然后求这些矩形的总覆盖面积,也就是面积并。 我就不讲暴力,直接切入正题吧。 扫描线, 阅读全文
posted @ 2018-10-12 23:59 mrclr 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 题目大意:n个人排队,每一个人有一个pos和一个val,表示这个人要插到第pos这个位置,pos以及pos之后的人就都往后挪一位,最后输出整个序列的val。 后面的人可能会对前面的人造成影响,因此可以想到离线逆序插入。然后用线段树维护当前区间的空位数量,那么每一个人的pos就变成了要插入第p 阅读全文
posted @ 2018-10-12 16:42 mrclr 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这道题正解是怎么对的其实我也不清楚,总之靠感性理解吧。 首先当然要把1到n / 2的素数都筛出来,因为两两能配对的数一定都是这些素数的倍数。这也就说明对于(n / 2, n]的素数,他们一定不能配对,所以就不用筛他们了。 筛完后我们考虑怎么配对,对于一个素数的所有倍数xi,他们任意两个都可以 阅读全文
posted @ 2018-10-12 13:00 mrclr 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 题面就是说,解方程 a + c * x Ξ b (mod 2k) 然后变个型:a + c * x - 2k * y = b - a。用exgcd求解即可。 刚开始我以为b - a还要正负讨论,但其实不用,因为正负数取摸结果不一样。 然后我调了半天是因为当a = b = c = k = 0的时 阅读全文
posted @ 2018-10-12 11:07 mrclr 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 我一眼就知道是exgcd,但是还是想的不太周全。 应该分两种情况:1.a在左边,b在右边。那么得出方程ax - by = d。然后就是正常的exgcd求解了: 解得ax + by = (a, b)的解x', y'。 算出ax + by = d的解x = x' * d / (a, b) 算出x 阅读全文
posted @ 2018-10-12 09:32 mrclr 阅读(110) 评论(0) 推荐(0) 编辑