摘要:
传送门 "Luogu" 解题思路 二分图匹配,关键是建图。 如果我们naive地直接把每个武器的两个属性分为两部建图的话,显然是跑不了的。 我们考虑把每一个武器的属性向它连边:$a_i \rightarrow i,b_i \rightarrow i$ 然后我们从属性这一部从小到大枚举,寻找增广路,直 阅读全文
摘要:
传送门 "Luogu" 解题思路 考虑树形 $\text{DP}$ 设状态 $dp[u][i][j]$ 表示从首都走到点 $u$ ,经过 $i$ 条公路,$j$ 条铁路的最小不方便值。 对于叶子节点也就是村庄,直接初始化,对于非叶子节点也就是城市,就从两个儿子向上转移。 而现在的一个问题就是:我们的 阅读全文
摘要:
传送门 "Luogu" 解题思路 看到正负号相互抵消,很容易联想到括号匹配和栈。 但由于题目钦定了一些位置只能是负数,所以我们可以这样考虑: 把负数视为右括号,正数视为左括号,然后开一个栈,从右往左遍历,能匹配就匹配。 如果能匹配但是不匹配,一定不会更优,这是显然易见的。 细节注意事项 + 咕咕咕 阅读全文
摘要:
传送门 "Luogu" 解题思路 ~~毒瘤~~数位DP,发现一个前缀我们只需要记录它对 $\operatorname{lcm}(1,2,3,\cdots,9)=2520$ 取模的值即可,所以我们在 DP 时记录一下当前的前缀模2520的值,以及前缀每一位数字的 $\operatorname{lcm} 阅读全文
摘要:
传送门 "Luogu" 解题思路 数位 $\text{DP}$ 设状态 $dp[now][las][0/1][0/1]$ 表示当前 $\text{DP}$ 到第 $i$ 位,前一个数是 $las$,有没有顶到上界,有没有前导零的答案。 转移十分显然。 细节注意事项 + 咕咕咕 参考代码 完结撒花 $ 阅读全文
摘要:
传送门 "Luogu" 解题思路 $\text{DP}$ 很显然: 设 $dp_i$ 表示前 $i$ 个玩具的最小费用,转移就是: $dp_i = \max\limits_{0\le j include include define rg register using namespace std; 阅读全文
摘要:
传送门 "Luogu" 解题思路 考虑如何 $\text{DP}$ 为了方便处理,我们设 $A B$ 设 $dp[i]$ 表示处理完 $1...i$ ,并且第 $i$ 个数放入关于 $A$ 的集合中的方案。 转移就只需要枚举前一个数 $j$ 就好了。 但是观察到 $N \le 10^5$ ,我们就需 阅读全文
摘要:
传送门 "Luogu" 解题思路 整体二分。 的确是很难看出来,但是你可以发现输出的答案都是一些可以被看作是关键字处于 $[1, n]$ 的询问,而答案的范围又很显然是 $[0, n]$,这不就刚好满足了整体二分的几个组成部分了吗。 那么我们要如何求出 $mid$ 位置的解呢? 考虑 $\text{ 阅读全文
摘要:
传送门 "Luogu" 解题思路 这是一道概率期望相关的 $\text{DP}$ 首先 $\text{Floyd}$ 预处理一下两点的最短距离。 然后考虑如何 $\text{DP}$。 我们设 $dp[i][j][0/1]$ 表示当前处理到第 $i$ 个时间点,申请了 $j$ 次换地点,第 $i$ 阅读全文
摘要:
传送门 "Luogu" 解题思路 考虑 $\text{DP}$ 设 $dp[i][j]$ 表示飞到 $(i, j)$ 这个点的最小触屏次数。 转移其实比较显然,但问题是每次上升时都可以点很多次,这一维次数如果枚举的话,就会带来复杂度的GG。 我们考虑到一个性质,这个无限次点每次都是增加固定的高度,有 阅读全文
摘要:
传送门 "Luogu团队题链接" 解题思路 看到 $m$ 这么小,马上想到状压 $\text{DP}$。 设 $dp[i][j]$ 表示在前 $i$ 家商店中已买商品的状态为 $j$ 的最小花费。 但是有一点小问题,因为在同一家商店买多次物品时,只需要花一次路费,如果总是特判的话,就会比较麻烦,所以 阅读全文
摘要:
传送门 "Luogu" 解题思路 首先考虑怎么求方案,这样才可能会输出方案。 考虑 $\text{DP}$。 设 $f[i][j]$ 表示在 $a$ 序列中选择一个 $[1...i]$ 的 子序列 与 子序列 $b[1...j]$ 匹配得到的最长LCIS(其中 $b[j]$ 强制被选)。 有一个很显 阅读全文
摘要:
传送门 "Luogu" 解题思路 这题就是 GSS3 的一个退化版,不带修改操作的区间最大子段和,没什么好讲的。 细节注意事项 + 咕咕咕 参考代码 cpp include include include include include include include include define 阅读全文
摘要:
传送门 "Luogu" 解题思路 看一眼题面,显然这是一颗 ,考虑到这棵 的中序遍历总是不变的,所以我们就先把所有点按照数据值排序,求出 的中序遍历,然后还可以观察到,点的权值并不直接参与答案的计算,所以我们还可以把点的权值离散化(毕竟 $4e6$ 不是个小数字)。 然后我们就可以愉快的开始 $\t 阅读全文
摘要:
传送门 "Luogu" 解题思路 显然对于两棵树共有的边,我们不会动它。 考虑第二颗树中有和第一棵树不同的边怎么处理。 我们设 $fa_1[u],fa_2[u]$ 分别代表 $u$ 在两棵树中的父亲。 很显然的想法就是对于第一棵树中的边 $fa_1[u] \rightarrow u$ 没有出现在第二 阅读全文
摘要:
传送门 "Luogu" 解题思路 考虑区间 $\text{DP}$。 设 $f[i][j][k]$ 表示 $[i,j]$ 这段区间接上后面 $k$ 个与 $j$ 颜色相同的块得到的答案。 转移就是: $f[i][j][k] = \max\left\{f[i][j][0]+(k+1)^2\right\ 阅读全文
摘要:
传送门 "Luogu" 解题思路 带换根操作的树剖。 换根只会影响更新或查询子树信息的操作。 我们始终保持初始的根不变,然后只要分类讨论一下: 假设当前被查询的节点是 $u$ 1. 如果 $u$ 就是根节点,直接询问整棵树; 2. 如果 $u$ 不是根,且不是初始根的祖先,直接查询子树即可; 3. 阅读全文
摘要:
传送门 "Luogu" 解题思路 发现一个性质: 对于所有的宝藏点 ${a_1,a_2...a_k}$ ,按照dfs序递增排列,答案就是: $dis(a_1, a_2) + dis(a_2, a_3) + \cdots + dis(a_{k 1}, a_k) + dis(a_k, a_1)$ 考虑加 阅读全文
摘要:
传送门 "Luogu" 解题思路 考虑把22个字符状压下来,易知合法情况就是状态中之多有一个1,这个可以暴力一点判断23次。 然后后就是 dsu on the tree 了。 细节注意事项 + 咕咕咕 参考代码 cpp include include include include include 阅读全文
摘要:
传送门 "Luogu" 解题思路 线段树合并板子题(也可以 dsu on the tree) 好像没什么好讲的,就是要注意开 long long 。 细节注意事项 + 咕咕咕 参考代码 cpp include include include include include include inclu 阅读全文