#918. 【UR #28】偷吃蛋糕 总结

#918. 【UR #28】偷吃蛋糕 总结

一道搜索好题,并没有像“智破连环阵”运用高深的算法进行卡常,却可以通过严谨的证明让搜索成为 n2000 的正解。

由于笔者水平有限,这只能是总结,不能是题解。

想看题解请去UOJ


启示一:n2000 也可以用搜索

真的没想到,虽然这道题我有过很多剪枝的思路,但是怎么也想不到 n2000 是搜索能过了。

只要有了“搜索剪枝”这个方向,我想在 4.5h 内是可以设计出正解的。(但是证明不了,只能通过造数据测效率)


启示二:分析复杂度也需要用算法

这道题分析 O(nn2n) 的复杂度时需要用到根号分治。这是因为有效的 c=n,和一定的时候考虑根号分治。这与我们"一般出现次数都与根号分治挂钩"的论断相符,因为其本质也是因为出现次数 c 之和 c=n


启示三:当我们能直接计算的时候就应该避免递归枚举

是一个剪枝技巧,可以对效率有很大的提升


启示四:列出一个计算次数的形式化表示后,求复杂度就是在求这个式子的最值

比如我们设 f(i) 表示递归到 i 后的计算次数,且分析到 f(i)=maxj=i+1nf(j)×(ji) 并有 f(n)=1 求复杂度。

可以理解这个式子的组合意义,可以发现其就是:

maxixist.ixi=ni,xi\Z[1,n]

根据差小积大的原理,我们应该使得 x 尽量相同,假设总共有 k 个数,那么 x=knk,因为 k\Z,当 k=3 去到最大值 O(3n3)

这就是第一部分的复杂度分析原理——最大化。

还可以直接列出一个合法状态数的形式化限制,通过 dp 等最优化算法得出其最大值。

网页截图:

这样可以算出搜索上界,但是:

很神奇。

作者:lupengheyyds

出处:https://www.cnblogs.com/lupengheyyds/p/18736571

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   lupengheyyds  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示