摘要:
题目链接: "戳我" 分层图最短路问题。 我们设$dp[i][k]$表示节点为i,现在还有k条边可以走的状态。然后跑一个最短路就行了。因为是不定项更新,所以考虑spfa。 注意到了加油站是 强制消费 。然后分向上下左右四个方向走和原地建加油站五种情况来讨论。 注意最后更新答案的时候k==0不要忘了考 阅读全文
摘要:
题目链接: "戳我" 就是普通的最大费用最大流问题,比较特殊的就是边只能取一次,怎么处理? 其实也很简单,就连一个流量为1,费用为收益的相反数的边,再连一个流量inf,费用为0的边即可。 代码如下: cpp include include include include include includ 阅读全文
摘要:
题目链接: "戳我" 拆点。第一种情况流量为1,第二种情况同一个点之间连inf,第三种情况除了第一行连1,其他都inf。 做完了。注意空间还是要开够,而且数值还有负数。 跑最大费用最大流即可。 代码如下: cpp include include include include include inc 阅读全文
摘要:
题目链接: "戳我" 可并堆的一个题目,我写的是左偏树。 我们从下往上面合并,维护一个小根堆,如果在当前节点死亡就弹出,并标记该骑士的终止节点。 这道题和模板不太一样的是还要维护两个标记——add,mul。记得每次调用树上节点值的时候push_down一次!!! 代码如下: cpp include 阅读全文
摘要:
题目链接: "戳我" 线段树qwqwq动态维护最长上升子序列的长度 对于一个区间,我们记录两个参数——$ans$表示这个区间里面的上升子序列的个数,$k$表示最大的斜率。 关键是怎么合并?肯定是左区间的ans+右区间在左区间最大斜率的限制下的上升子序列个数。 怎么计算右区间的那一部分?我们把右区间分 阅读全文