首页 > TAG信息列表 > CF464E
CF464E The Classic Problem
传送门 思路 \(2^{100000}\) ?别想了,普通高精度肯定不行 但我们发现,求最短路的过程中,其实是用到了比较大小和加法操作 细想比较大小的过程,当长度相同的数,我们会先略过前面相同的部分,比较第一个不同的数字,时间大部分都耗在了相同部分的枚举上 我们就可以使用二分,找出第一个不同的数CF464E The Classic Problem(线段树 最短路)
CF464E The Classic Problem \(\bigstar\texttt{Hint}\):发现没有什么好的突破口?为什么不想想怎样才能实现题目中 \(2^x\) 的加减法呢? 可见每次加减法,我们要做的是将添加的 \(1\) 和右边的连续的 \(1\) 合并为一整段,可以用线段树 \(\mathcal{O(\log n)}\) 实现。 怎样比较大小呢?考CF464E The Classic Problem
下面的讨论默认 \(n,m,x_i\) 同阶。 这个问题与常规 \(\tt dij\),仅仅差在高精度。而 \(\tt dij\) 所需的高精度如下: \(dis_u+w(u,v)\) 中的加法,应该有 \(m\) 次。 \(dis_u+w(u,v)\) 与 \(dis_v\) 的比较,应该有 \(m\log\) 次。 考虑数据结构维护 \(dis\) 的二进制分解。直接维护