摘要:
题目链接:BZOJ - 3942题目分析我们发现,删掉一段 T 之后,被删除的部分前面的一段可能和后面的一段连接起来出现新的 T 。所以我们删掉一段 T 之后应该接着被删除的位置之前的继续向后匹配。那么我们维护一个栈,一直向后匹配,如果栈顶出现了 T ,就弹出 T 个字符,然后继续从新的栈顶向后匹配... 阅读全文
摘要:
题目链接:BZOJ - 3888题目分析首先,计算出每个线段在 x 坐标 0 处出现的时间开始点和结束点,就转成了时间轴上的线段。然后就是看每条线段是否被 y 比它小的线段完全覆盖了。注意求出的时间点要离散化,然后应该使用时间轴上的区间来表示,两线段端点重合并不是有共同部分。将所有线段按照 y 从小... 阅读全文
摘要:
题目链接:BZOJ - 3564题目分析求最小椭圆覆盖,题目给定了椭圆的长轴与 x 轴正方向的夹角,给定了椭圆长轴与短轴的比值。那么先将所有点旋转一个角度,使椭圆长轴与 x 轴平行,再将所有点的 x 坐标除以长轴与短轴的比值,然后就直接做最小圆覆盖了。随机增量法,一定别忘了 random_shuff... 阅读全文
摘要:
题目链接:BZOJ - 1907题目分析使用树形 DP,f[x][0] 表示以 x 为根的子树不能与 x 的父亲连接的最小路径数(即 x 是一个折线的拐点)。f[x][1] 表示以 x 为根的子树可以与 x 的父亲连接的最小路径数。转移的方式非常巧妙,Orz PoPoQQQ 的 blog 。代码#i... 阅读全文
摘要:
题目链接:BZOJ - 1221题目分析算法一:最小费用最大流首先这是一道经典的网络流问题。每天建立两个节点,一个 i 表示使用毛巾,一个 i' 表示这天用过的毛巾。然后 i 向 T 连 Ai (第 i 天需要的毛巾数)。从 S 向 i' 连 Ai ,这样这天新增的用过的毛巾就是 Ai 了。然后 i... 阅读全文