2.16模拟总结

前言

期望:100+70+0=170
实际:40+0+0=40
rnk14

分全部挂没了,太行了。
T1不开longlong见祖宗,而且KH说的那个也有道理,带权之后树的重心可以不只有两个,所以最后还应该倍增的跳。(然而这个地方题解似乎都忽略了
T2线性筛写挂身败名裂。
T3根本没摸,本来还打算至少敲个暴力来着,但被T2心态搞炸了。

题目解析

树的核心(core)

我、kH、pdf一边一个做法的一道题。
但是必须承认pdf的做法实现是最简单的。

我这个题的做法倒是出的很快,差不多8:30就出思路了。
我的做法是找到当前加一的部分的重心,新重心一定在旧重心和原来这个重心的路径上。
代码实现的很不好,写拍调整到十点。

pdf思路:答案的子树权值大小必然严格大于总权值一半,那么在dfs序的线段树上按照点权二分,找到权值中点对应的结点,其必然在答案的子树内,也就是说,答案必然在该结点的返祖链上。
往上倍增的找即可。

随机填数(random)

写完T1看这题。
是我之前做过的一道CF的多测板。
按照CF的做法有70。
一方面给了我方便,也某种程度上限制了我的思维罢。
但这题我也确实做不出来,需要的那个技巧根本就不在我脑子的“寄存器”里,估计很难访问到了。

一个重要结论:
E ( x ) = ∑ i = 1 P ( x ≥ i ) E(x)=\sum_{i=1}P(x\ge i) E(x)=i=1P(xi)
较为显然,之前也见到过,但没有特别上心。
然而,本题后面这个概率却能很方便的求出。
首先分母很好办,就是 m i − 1 m^{i-1} mi1 x ≥ i x\ge i xi 也就等价于 [ 1 , i − 1 ] [1,i-1] [1,i1] 的序列的 gcd ⁡ \gcd gcd 大于1(只考虑 i > 1 i>1 i>1)。那么我们考虑补集,也就是 gcd ⁡ = 1 \gcd=1 gcd=1 的序列有多少个:
∑ a 1... i − 1 [ ( a 1 , a 2 , . . . , a i − 1 ) = 1 ] \sum_{a_{1...i-1}}[(a_1,a_2,...,a_{i-1})=1] a1...i1[(a1,a2,...,ai1)=1]
= ∑ a 1... i − 1 ∑ d ∣ ( a 1 , a 2 , . . . , a i − 1 ) μ ( d ) =\sum_{a_{1...i-1}}\sum_{d|(a_1,a_2,...,a_{i-1})}\mu(d) =a1...i1d(a1,a2,...,ai1)μ(d)
= ∑ d = 1 m μ ( d ) ⌊ m d ⌋ i − 1 =\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i-1} =d=1mμ(d)dmi1
那么我们其实就是求:
∑ i = 2 ∞ P ( x ≥ i ) + 1 \sum_{i=2}^{\infty}P(x\ge i)+1 i=2P(xi)+1
= ∑ i = 2 ∞ m i − 1 − ∑ d = 1 m μ ( d ) ⌊ m d ⌋ i − 1 m i − 1 + 1 =\sum_{i=2}^{\infty}\frac{m^{i-1}-\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i-1}}{m^{i-1}}+1 =i=2mi1mi1d=1mμ(d)dmi1+1
= ∑ i = 1 ∞ m i − ∑ d = 1 m μ ( d ) ⌊ m d ⌋ i m i + 1 =\sum_{i=1}^{\infty}\frac{m^i-\sum_{d=1}^m\mu(d)\lfloor\frac m d \rfloor^{i}}{m^i}+1 =i=1mimid=1mμ(d)dmi+1
= 1 − ∑ i = 1 ∞ ∑ d = 2 m μ ( d ) ⌊ m d ⌋ i m i =1-\sum_{i=1}^{\infty}\frac{\sum_{d=2}^m\mu(d)\lfloor\frac m d \rfloor^{i}}{m^i} =1i=1mid=2mμ(d)dmi
= 1 − ∑ d = 1 m μ ( d ) ∑ i = 1 ∞ ⌊ m d ⌋ i m i =1-\sum_{d=1}^m\mu(d)\sum_{i=1}^{\infty}\frac{\lfloor\frac m d \rfloor^{i}}{m^i} =1d=1mμ(d)i=1midmi
= 1 − ∑ d = 1 m μ ( d ) ⌊ m d ⌋ m − ⌊ m d ⌋ =1-\sum_{d=1}^m\mu(d)\frac{\lfloor\frac m d \rfloor}{m-\lfloor\frac m d \rfloor} =1d=1mμ(d)mdmdm
预处理 μ \mu μ 的前缀和,整除分块即可做到单次 O ( n ) O(\sqrt n) O(n )

等权划分(value)

由于本次考试上来就对T1有了思路,调完T1又一直在T2挣扎,所以这个题几乎没有摸。
因而谈不太上考场感受,但是看题解感觉我应该是做不出来的。
三个关键点,我的评价分别是:很难想到,很难想到,很难想到。
毕竟做题可是且运算,卡一个地方这题就没了。
由于字典序优秀的贪心性质,我们可以每次都尽可能的尝试填A,然后判断接下来的局面是否有解。
那么问题就转化为了对于一个局面,如何快速判断有无解。

关键性质:如果一个局面有解,那么必然可以构造一种合法方案,使得一个序列中的合法点都是完整原序列的前缀最大值(其必然也所在序列的合法点,以下简称必大点)。

证明:如果一个序列存在非必大点的合法点,那么其前方第一个必大点必然在另一个序列里。那么若两个序列都存在非必大点的合法点,令两个对应的必大点互换位置,即可保证合法点数都减一的同时,使非必大点个消失一个。不断如此操作,至少有一个序列的合法点全是必大点。
(个人感觉证明倒不是特别难,但真的很难独立猜出这种鬼马结论并认为它有用…)

我们强制令一个序列全是必大点(注意这个序列即可以是A,也可以是B,下面假设其为B)。若后边还有 c c c 个必大点,A选的合法点中必大点和非必大点分别有 p , q p,q p,q 个,A、B当前选的合法点有 f a , f b fa,fb fa,fb 个,那么就有:
f a + p + q = f b + c − p fa+p+q=fb+c-p fa+p+q=fb+cp
整理得:
2 p + q = f b − f a + c 2p+q=fb-fa+c 2p+q=fbfa+c
其中右边的东西对于某个确定局面为定值,设其为 w w w。令A序列选取必大点为合法点的价值为2,非必大点的价值是1,那么就要求存在一种选点方案使得总权值为 w w w

结论:对于一个残局,一个子序列S可以成为A的合法点序列的充要条件是其递增。并且可以使B序列只选取该子序列外的必大点作为合法点。

(这个pdf没有细讲,但我觉得还是需要讲一下的)
证明:前缀最大值必然递增,必要性显然。充分性尝试构造性证明:对于一个递增子序列S,从前往后考虑每个元素划分到哪里。对于一个属于S的元素,直接给A,否则,若是必大点,直接给B,否则,其前面必然存在比它大的元素x,把当前元素划分到x所在的序列即可。

又注意到,由于元素只有1或2,那么如果权值x是合法的,那么x-2必然也是合法的。所以我们只需要对奇权值和偶权值分别从后往前做一遍带权LIS并互相转移,每次在 w w w 奇偶性对应的线段树上查询是否不小于 w w w 即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值