2023.8.18 闲话

语录:

Rolling_star:*2900,不是特别高

K8He:但是怎么一不小心就最优解了呀,你们都不卡常的吗

K8He:刚才教练说话的时候,我以为又要发零食了

y_z_h:(精神小火)怎么起这么个 SB 名字

y_z_h:SB jijidawang

Aewruxk:(%%% happyguy)膜个 JB

IBR 1C. 子集积

单步容斥后变算 \(\le m\) 的个数,不难想到特判 \(1\) 后直接背包计算 .

不过不太能过,注意到答案和序列的顺序并没有关系,于是可以把相同的数一起转移,这样就能过了 .

根据调和级数的分析可以得到时间复杂度为 \(\Theta(m\log m)\) .

IBR 1E. 树上数点

类似 Blood Cousin 考虑启发式合并,每个深度分别维护,则可以发现只需要维护一种维护集合的数据结构,需要支持:

  • 全局加 .
  • \(\le k\) 的元素个数 .

用带标记的 Um_nik 维护,使用有序数组归并好像时间复杂度就是 \(\Theta((n+q)\log n)\) .

IBR 2B. 最大割

正边全割掉之后边权取负算最小割即可 .

时间复杂度 \(\Theta(\operatorname{dinic}(n,m))\) .

IBR 2C. 勾股数对

首先为了方便分析令 \(n,m,p\) 同阶 .

众所周知任意满足 \(2\mid y\) 的本原勾股数 \((x,y,z)\) 和满足 \(a\perp b,\,a>b\)\(a,b\) 奇偶性不同的正整数 \(a,b\) 形成双射:

\[\begin{aligned}&x=a^2+b^2\\&y=2ab\\&z=a^2-b^2\end{aligned} \]

那么再看 \(x,y\) 的限制可以发现 \(a,b\) 其实是被限制在不大于 \(\sqrt n\) 级别的,于是暴力枚举是可以接受的 .

时间复杂度为 \(\Theta(n)\)\(\Theta(n\log n)\)(GCD 贡献 log,不带 log 的做法可以看 zky 写的).

理论速通方式:找 Keven_He(玩原神)写,时间复杂度 \(O(p)\) .

I am that light, I am deliverance.

posted @ 2023-08-18 20:35  Jijidawang  阅读(90)  评论(3编辑  收藏  举报
😅​