【考试总结】2022-08-15

背包

Ri 缩小到颜色物品数量级别,于是 Rn

计算框架显然是优先队列弹出时找后继。需要满足后继总和一定大于当前元素,而且转移路径是唯一的

按照次小值和最小值的差从小到大排序。维护指针表示当前考虑的物品,初始指向第一个元素。于是后继可以刻画为:

  • 将当前物品的选择方案替换为其后继。

  • 将下一个物品的选择方案替换为其后继并将指针挪到下一个物品处。

  • 如果当前物品方案是其次小方案,那么将其替换为最小方案,将下一个元素选择方案替换为其后继,再将指针挪到下一个元素

每个物品维护一个堆,初始化为前缀最小的 [L,R] 个。每个状态也另维护指针,后可以通过当前元素后移和“固定当前元素并让上一个元素右移”两种。状态的存储是 Θ(1) 的,因为在当前指针之前的都没动过,指针之后的都不在动了,于是存一下当前指向和下一个数停止点即可

外侧叶子和子树祖先同色,形成封锁。

形式化而言,现在尝试解决一个子问题:子树根的祖先和子树的最左侧最右侧两个叶子同色,给剩下节点染色的方案。

比较直接的想法就是让子树最外侧直径染成同一个颜色,这对于剩下节点的染色又形成了封锁,让每个子树的两个叶子也染和链相同的颜色后递归解决,但是还是不够。

每个点的度数非常有限,那么可以让封锁效果产生在链上和每个点相邻的点之间,那么可以将链的两侧染相同的回文颜色。此时每种颜色只会出现在四个子树根的父亲位置和对应的八个叶子,最多 12 次

棋盘

二分答案,Alice 的目的是让棋子最终不落在 mid 的格子上,Bob 的目的反之。此时每个人的目的就是挪到一个异色格子,不能挪的人输。

这是一个二分图博弈问题,先手必胜的条件是所有的最大匹配都覆盖了起点。证明考虑“完全覆盖”和“最大匹配”两个限制条件即可。

最大匹配全覆盖变最大独立集在删去起点前后没区别。

a,b 序列排序之后发现白色节点蜷缩在右下角,双指针扫出来每行每列有几个白色格子。根据上面的过程可以发现走 1e9 次和走 1 次没什么区别。设一段下缀后缀为白行白列,剩下的是黑行黑列。那么白行白列上的白格子黑行黑列行的黑格子都是独立集中元素。增加白列增量是点数加行数减 n。最优决策点单调左移,扫描即可

posted @   没学完四大礼包不改名  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示