随笔分类 - 有用的芝士
摘要:Dp的优化 单调栈优化Dp The Great Wall II 题意: 给你 n个点,问分成 1∼n 组,每一组的代价就是这一组中的最大值,问每一种情况的最小权值和。 思路: 把状态定义为 d i j 表示 走到 i 号点了 分了j 组的最小代价。 那么先枚举分成了几组 ,枚举从哪个点转移。 d[i
阅读全文
摘要:树上差分 Global Positioning System 题意: 通过m次测量,测量出n个点之间的大小关系,(三维的大小关系),然后有可能一个点测量出错了,问你有哪些边修改之后能够保证这些点之间的大小关系相同。 如果 1 -> 2 (1,1,1), 1->3(2,2,2) 如果2->3 不等于
阅读全文
摘要:代码拍卖会 题意 问有[ L - R ]有多少个数满足每一位都至少有 1,从左到右不减同时要能被P整除,位数<= . p<=500) 思路 位数贼大,基本上别想着枚举有关位数的东西 单调不减,说明什么,说明一个合法的方法我前面的 +1 后面的至少要 +1 ,如果把他们看成最多 9个 长度为
阅读全文
摘要:区间Dp Game Rooms 给你n层楼,每一层有一个喜欢游泳的人数和打乒乓的人数,你可以再每一层中建造游泳馆后者乒乓球馆,问如何建造可以使得他们需要爬楼的代价最小。也就是人数*要爬的楼数。 一点小拓展 二阶前缀和:对于一个 i 点,如果到 1 的代价是 i 的话,那么前 i 个点的代价和 也就是
阅读全文
摘要:奇怪的判断方式 判断是否包含 在一个地图上走走走,走出一个闭合的路径,如何判断一个点是否被我包在里面。 根据射线定理,如果一个点往右边经过的边的数量是奇数,那么这个点就一定在这个块内。 要注意横着走的情况要排除,比如下图 这是一种合法的情况 Code int nw(int x,int y,int n
阅读全文
摘要:河流(树上Dp) 题意 给你n+1个点,n条边,保证构成一棵树,然后再这n个上建造k个中转站,(0默认有,所以是n 个点)。每个点有w 个需要中转的物品,求最后全部中转完的最短距离。 难点 如果我枚举当前建造了多少个中转站,但是我们不知道当前这个点有没有中转站,所以我们需要开两个dp,把两种
阅读全文
摘要:换根Dp 模板题 什么是换根Dp捏?换根Dp就是根据父亲的属性来更新他更新儿子的属性,相当于只需要考虑把顶点移到儿子对结果造成的影响。 奶牛聚会 每个奶牛居住在 N 个农场中的一个这些农场由 N-1条道路连接,并且从任意一个农场都能够到达另外一个农场。同时给一个C数组表示每个农场的牛的数量,每条道路
阅读全文