摘要:
牛牛补题 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,把两种 阅读全文