【总结】USACO2022FEB

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【总结】USACO2022FEB脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Gold

T1

对于每一行,从 (i) 向在 (i) 前面的点(包括自己)连边,那么原题转化为将给定有向图划分成若干个简单环的方案数,预处理环后 DP 即可,时间复杂度 (mathcal{O}(n^32^n+3^n))

T2

很强的期望题,我们定义状态 (f_{i}) 表示 (i) 次询问的期望最优对多少个,显然有 (f_{i} = sumlimits_{j=0}^{T}p_jtimes max{j, f_{i - 1}})

(p_i) 表示恰好对 (i) 个的概率,求出 ({p}) 的前缀和 ({s}),再预处理期望 (e_{i} = sumlimits_{j = i} ^ T p_jtimes j),那么转移可以写成 (f_{i} = s_{leftlfloor f_{i - 1}rightrfloor} times f_{i - 1} + e_{leftlfloor f_{i - 1}rightrfloor + 1})

不难发现转移可以划分成 (mathcal{O}(T)) 个连续段,段内转移都是相同的 (f_{i} = kf_{i - 1} + b),每次二分端点即可,时间复杂度 (mathcal{O}(T^2 + Tlog k))

T3

对于每个点,对于每个 (y) 找最近的 (x) 连边,然后跑最小生成树即可。

Platinum

T1

先用扫描线将矩形变为一次线段加和一次线段减。

每次线段变化时,将修改的区间内,所有的颜色段都新增一个连通块,记录到答案中。

在线段减时,要将两端的颜色段合并掉,在答案中减去。这些都可以用树状数组维护。

但是发现过不去样例二,观察一下发现样例一所有线段连通,而样例二有两个连通图。

所以我们再用 set 维护一下有多少个线段构成的连通图。总时间复杂度 (mathcal{O}(Nlog N))

T2

({a}) 求得前缀和 ({s}),手盘样例得到如果 (q_i | s_n) 则答案为 (n+1+dfrac{s_n}{q_i} - 2times sum)(sum) 表示 ({s}) 中有多少个 (q_i) 的倍数,否则无解。

直接做是 (mathcal{O}(QN)),实际上还能多过几个点。

考虑优化,由于我们只用考虑 (q_i | s_n) 的情况,所以我们先 pollard-rho 将 (s_n) 分解质因数,最多就 (10^5) 个因数,然后高维前缀和搞一下即可,时间复杂度 (mathcal{O}(omega(sum a)sigma(sum a)))

T3

非常神的 DP。

我们定义状态 (f_{i}) 表示前 (i) 位的答案。

有三种转移,分别对应划分最后 (1) 位,划分最后 (2) 位和划分最后 (4) 位。

但是这些情况会重复,考虑容斥掉相同的,大力讨论一下。

具体实现了一个 (calc(x,op)) 函数,表示对以 (x) 结尾的最后 (4) 位划分成一段,最后两位不变,倒数三四位交换的方案对 (f_{op}) 的贡献。如果 倒数三四位能够交换就直接返回,否则倒数第 (6) 位到倒数第 (3) 位必须能划分成一段,然后递归到 (calc(x-2,op)) 即可。

其余的细节省略,复杂度感觉是 (mathcal{O}(|s|^2)),实际上跑起来 (100ms) 都不要。

脚本宝典总结

以上是脚本宝典为你收集整理的【总结】USACO2022FEB全部内容,希望文章能够帮你解决【总结】USACO2022FEB所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: