(FJWC2020) DTOJ 4690. 亚特兰大

2024-03-08 23:32

本文主要是介绍(FJWC2020) DTOJ 4690. 亚特兰大,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意

司令部截获了深海的电报,你的镇守府即将被深海轰炸。
虽然你作为历战提督,已经有了很多局地战、火箭机,但是刚刚击破 E6 甲,拥有亚特兰大以及最高倍率对空 ci 的你,决定只用亚特兰大抵挡对面的炸家。
你的镇守府可以看成一棵树,深海的轰炸是在某两个点之间进行的(起点终点交换视为一种),轰炸路径是树上的简单路径。也就是说,深海一共有 C n 2 C_n^2 Cn2 种可能的轰炸方案。
你的亚特兰大在不同的边上具有不同的击坠值,最终深海剩下的飞机数是经过路径上所有击坠值的 g c d − 1 gcd-1 gcd1。当这个值变成 0 0 0 时,你就成功抵挡住了深海的炸家。
现在你想知道,深海一共有多少种可能的轰炸方案,你可以成功抵挡。
但不幸的是,亚特兰大初来乍到,击坠值有点不稳定,所以会出现 Q Q Q 次击坠值变化,每次变化指某一条边的击坠值改变。
请你计算出这 Q + 1 Q+1 Q+1 种局面的所有答案。

对于所有数据,满足 2 ≤ n ≤ 1 0 5 , Q ≤ 100 , 1 ≤ w , x ≤ 1 0 6 2 \leq n \leq 10^5,Q \leq 100,1\leq w,x\leq 10^6 2n105,Q100,1w,x106
对于 10 % 10\% 10% 的数据, n ≤ 300 n \leq 300 n300
对于 30 % 30\% 30% 的数据, n ≤ 1000 n \leq 1000 n1000
对于 70 % 70\% 70% 的数据, n ≤ 7000 n \leq 7000 n7000

题解

先考虑没有修改怎么做,考场上写的是莫比乌斯反演后用点分治计算(因为是关于路径的计数),但效率是 O ( s n l o g n ) O(snlogn) O(snlogn)的,其中 s s s为约数个数(最大 240 240 240,去掉 m u = 0 mu=0 mu=0后最大 128 128 128),且常数大过不了。既然反演后每个因数是独立的,考虑每个因数单独计算,各自维护它的倍数的边组成的图,对每条边把它的因数的图对应的点连起来,用并查集维护即可,效率 O ( s n ) O(sn) O(sn)(我好弱智啊)。
注意到修改次数没有很多,即每次修改后对应的图,大部分边是一样的,如果每次仍重新计算很浪费。考虑先做完没有改过的边,对每一次修改,都加上有修改的 q q q条边,同时要支持可撤销(即恢复到原来状态),用启发式合并即可,效率 O ( q 2 l o g n ) O(q^{2}logn) O(q2logn)

这篇关于(FJWC2020) DTOJ 4690. 亚特兰大的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788782

相关文章

DTOJ 2937. Sum of LCM

题意: 对于 A 1 , A 2 , … , A N A_1, A_2, \ldots, A_N A1​,A2​,…,AN​ ,求 ∑ i = 1 N ∑ j = 1 N l c m ( A i , A j ) \sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j) ∑i=1N​∑j=1N​lcm(Ai​,Aj​) 的值。 l c m ( a

DTOJ#4170. 「PKUWC2018」猎人杀

题意: 猎人杀是一款风靡一时的游戏“狼人杀”的民间版本,他的规则是这样的: 一开始有 n n n 个猎人,第 i i i 个猎人有仇恨度 w i w_i wi​ ,每个猎人只有一个固定的技能:死亡后必须开一枪,且被射中的人也会死亡。 然而向谁开枪也是有讲究的,假设当前还活着的猎人有 [ i 1 … i m ] [i_1\ldots i_m] [i1​…im​],那么有 w i k

DTOJ #4235. 交朋友

题意: 给定一个n个点m条边的有向图,对于同一个点连向的两个点可以互相连双向边,求图中最多有几条边。 题解: 直观地想,首先对于每一个点,若它的出度大于1,则它连向的边为一个完全图,但每个点做完后又会产生影响,因此没法保证效率。 发现“对于同一个点连向的两个点可以互相连双向边”这个条件类似于并查集,即把双向边视为无向边,这样恰好满足了并查集的性质。 因为原始的边不在并查集的考虑范围内,故用原始的边

(CSP2019模拟)DTOJ 4644. speike

题意 众所周知,Speike 狗是一条特别喜欢追着Tom 打的狗。 现在,Tom 又把Speike 惹生气了,现在Speike 需要跨越千山万水找Tom 报仇。 Speike 所在的世界可以看成是一个无穷大的平面,平面由一个平面直角坐标系确定。在平面上有许多不相交的矩形障碍,矩形的四边平行于坐标轴。 Speike 需要从 ( 0 , 0 ) (0,0) (0,0) 出发,在尽量短的时间内

DTOJ 4538. 「TJOI / HEOI2016」排序

题意 在 2016 年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。 这个难题是这样子的:给出一个 $1 $ 到 n n n 的全排列,现在对这个全排列序列进行 m m m 次局部排序,排序分为两种: ( 0 , l , r ) (0, l, r) (0,l,r) 表示将区间 [ l , r ] [l, r] [l,r]

(CSP2019模拟)DTOJ 4629. 世界

题意 有一个虚无的结界,隔开了两个世界。 人们在结界内游荡,而远方的星辰在结界外。 我们可以把结界看作 x x x 轴,那么人们都在 x x x 轴下方,而星星都在 x x x 轴上方。 人们本应该能看到所有的星星,但是结界外( x x x 轴上方)出现了几座墙,挡住了人们的视线。墙是平行于 x x x 轴的。 现在想问,每个人分别能看到多少星星。 测试点编号 n n n m

(CSP2019模拟)DTOJ 4632. 隐蔽的居所

题意 在小G的家乡,有很多人住在一个大湖的边上。 他告诉小D,这个大湖可以被视作一个圆。一共有 N N N 户人家, 他们住在这个圆的 N N N 等分点上,每个 N N N 等分点上恰好有一户人家. 这里的每户人家都有不同的信仰,其中第 i i i 户人家信仰第 i i i 种宗教。很显然,宗教对于生活会产生一定的影响,具体来说,相邻两户人家信仰的宗教的编号之差的绝对值不可以超过

(CSP2019模拟)DTOJ 4624. 树

题意 给定一棵 n n n 个结点的树,共有 q q q 次询问。 第 i i i 次询问首先包含了三个数 k i , m i , r i k_i,m_i,r_i ki​,mi​,ri​ ,接着给定了树上互不相同的 k i k_i ki​ 个关键点 a i , 1 , a i , 2 , … , a i , k a_{i, 1}, a_{i, 2}, \dots, a_{i, k}

(CSP2019模拟)DTOJ 4628. 黎明

题意 有一片云海形成的世界,有陆地有海洋,可以看作 R × C R \times C R×C 的网格。 随着岁月的变迁,有时候水位上涨,一部分区域会变成水道。 神奇的是,每次变成水道的区域都是一个矩形。(若这个矩形中有一部分原来就是水道,那么这部分不变,其他为陆地的部分变成水道) 有时候这个世界上会有人想从 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​) 通过在水道

(2019CSP模拟)DTOJ 4627. 灰烬

题意 灰烬之地有一排石柱,从左到右共有  n n n 个,其中有一些上面有灰烬,有一些上面没有。 你现在可以操控风的力量,风只能从左到右吹,每次你可以选择一个 k k k ( k k k 每次都可以变化),扬起前 n − k n-k n−k 个石柱上的一半的灰烬(你可以认为灰烬无穷多,每次取当前的一半,换言之是可以无限复制的),将其向右吹动  k k k 个位置。 问至少多少次可以使灰