08 2022 档案
摘要:牛牛补题 Bustling City 题意: 给定一个 表示 i 号城市每年会往 城市迁移一个人,对于每个点而言,求一个最小的年份满足至少有 m 个城市往当前点迁移,如果没有的话 输出 -1 . 思路: 这个题目首先一看就是一颗基环树,也就是 n 个点 n 个边,如果对于每个基环
阅读全文
摘要:Dp的优化 单调栈优化Dp The Great Wall II 题意: 给你 n个点,问分成 1∼n 组,每一组的代价就是这一组中的最大值,问每一种情况的最小权值和。 思路: 把状态定义为 d i j 表示 走到 i 号点了 分了j 组的最小代价。 那么先枚举分成了几组 ,枚举从哪个点转移。 d[i
阅读全文
摘要:势能线段树 什么是势能线段树 所谓势能线段树,是指在懒标记无法正常使用的情况下,暴力到叶子将线段树当成数组一样用进行修改。 大概就是先暴力,在暴力到一个状态的时候再用lazy标记。 D. Lowbit 题意: 一个数组,两个操作 1 L R, add lowbit(ai) each ai in th
阅读全文
摘要:树上差分 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个 长度为
阅读全文
摘要:# 虚树 简介 如果题目中有这样子的字眼,给你 q 个询问,每个询问给一些点,这些点的总和不多,但是总的点数很多,意思就是绝大部分点用不到,这样子的情况,就考虑用虚树去优化。 一般的步骤 1.dfs预处理出LCA需要用到的数组,顺便搞出DFS序 // 经典的 两件套去搞出 LCA void dfs1
阅读全文
摘要:区间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数组表示每个农场的牛的数量,每条道路
阅读全文
摘要:基环树 步骤一(找环) 只要找到环的边 只要找到一个环的两个端点,然后对于两个端点进行分类讨论,也就是把这条链断开再合上的情况:骑士 因为他只要找到一条会把原来的树形结构变成环的边。那么我们用并茶几(O.o)去维护当前两个点的状态,然后如果已经在一个集合里面了,就不加边而是存起来,最后对这两个点分别
阅读全文