ABC269 F~G

F:

我的做法比较繁琐,我维护的是白色点的权值和减去黑色点的权值和,还要求出整个矩阵的和。

可以参考一下,Code

翻了翻题解,似乎大部分人的做法都是求出询问矩阵第一行和第二行白色点的权值和,然后直接等差数列就好了,这种做法较为简洁,可以看这个

G:

首先很显然想到背包,每个物品的体积为 di=biai,代价为 1,那么就是求出凑出每个体积的最小代价,初值为 fcur=0,其余均为 ,其中 cur=iai

但是很显然,如果直接背包的复杂度是 O(nm)

性质 1|di|m

证明:|di|=|biai|ai+bi=m

性质 2|di| 的种类是 O(m)

证明:很显然,因为 1+2++m=O(m)

那么把体积相同的物品看成一种,这就是一个多重背包问题,只有 O(m) 种物品。

可以用二进制优化或单调队列优化。

但是这里比较特殊,二进制优化比单调队列优化快,还好写。

官方题解里提到当 ain 时,ailogaiO(nn) 级别的。

所以时间复杂度 O(mm)

Code

posted @   Kobe303  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示