摘要: 原题链接 考察:双端队列bfs 思路: 双端队列常用于距离只有0,1的情况.当距离为0时,更新的点放在队头.当距离为1时,更新的点放在队尾. 判断01距离不用写冗长的if代码.可以参照方向数组预设距离为0的斜杠应该有的方向. 这里当出队的距离才是确定了此点的最短距离. 1 #include <ios 阅读全文
posted @ 2021-04-10 23:57 acmloser 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:多源bfs 思路: 模板题.单纯记录证明过程.正解就是将所有值为1的点作为起点.bfs更新到达其他点的距离. 实际上相当于建立一个超级源点.该源点到其他为1的点距离是0.每次bfs取出队头的点一定是离源点距离最近的点.再以此更新到其他点的距离.这种做法很像dijkstra.但是区别是 阅读全文
posted @ 2021-04-10 17:14 acmloser 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:二分+前缀和 思路: 易知w变大,y和变小,w变小,y和变大.由此发现y与w的变化关系有单调性.但是这道题求的是abs(Y-S),答案和w的变化并无单调性.我们可以求最小的>=s的Y和最大的<s的Y.再两边求最小值. 真的没必要死脑筋的返回true与false.单纯数值类型可考虑返回 阅读全文
posted @ 2021-04-10 14:26 acmloser 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线性dp+背包dp 思路: 每个横坐标可以选择按或者不按,这种组合问题求最优解可以考虑背包dp. 易知f[i][j]为以i为横坐标,j为纵坐标的最小按键次数.这道题不需要不通过后判两次dp.只需要在当前坐标存在管道后检测是否通过管道,如果不通过就是输出0 当前管道数-1.那么dp转移 阅读全文
posted @ 2021-04-10 09:31 acmloser 阅读(82) 评论(0) 推荐(0) 编辑